Generating the Report

Now that the data is extracted from our log file and stored in an appropriate data structure, we’re ready for the fun part: generating useful information from all that data.

Generating the Summary Line

We start by adding a new configuration variable, up at the top of the script, to give the name of our web site as we want it to appear in the script:

my $site_name        = 'My Web Site';

Now we add the following to the middle of the script, after the main while loop is finished but before the subroutine definitions:

# done processing log file. begin output.

my $report = <<EndOfText;
$site_name Access Report -- $end_time

        From                  To           Hits   Views Visits   Mb
==================== ==================== ====== ====== ====== ======

This is just printing out a suitable header for the summary line, which comes next:

my $summary_line = sprintf 
    "%s %s %6u %6u %6u %6u\n", $begin_time, $end_time,
    $total_hits, $total_views, $total_visits, $total_mb;

$report .= $summary_line;

print $report;

This uses sprintf to print out a nicely formatted line summarizing the totals we kept track of during the while loop’s processing of the log file lines. The format string starts off with the formatting code %s (twice). This just formats its argument as a string; in this case, it drops in $begin_time and $end_time , which will always be 20 characters wide due to the standardized format of the log file’s date/time strings.


You might be wondering why we even need a formatting code for the $begin_time ...

Get Perl for Web Site Management now with the O’Reilly learning platform.

O’Reilly members experience live online training, plus books, videos, and digital content from nearly 200 publishers.