Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation

Comment on

( #3333=superdoc: print w/replies, xml ) Need Help??
Thank you. Turns out on my system, taint is a capital T. I also added the extra lines after header as suggested by DapperDan. Here's the resulting code plus some recent data, but all I get as output is "-: 1". Not sure why.

#!/usr/local/bin/perl -slwT

use strict;
use warnings;
use Date::Manip;
use CGI qw/:standard/;

# Make sure neither we, nor any of our submodules compromise security
# by calling unpathed programs.
$ENV{PATH} = "/bin:/usr/bin";

# Use CGI to print our headers
print header, "\n\n";

my %referers = ();

# Retrieve and security-check parameters
my $hour = param('hour');
my $minute = param('minute');

if ($hour !~ /^\d\d?$/) { die('Invalid hour'); }
if ($minute !~ /^\d\d?$/) { die('Invalid minute'); }

# Get date object for our check point
my $check_date = ParseDate("${hour}hours ${minute}minutes ago");

# File handling, one line at a time
open(FH,"datafile.html") || die('Could not open log file');
while (my $line = <FH>) {

    next if ($line !~ /^\S+ \S \S \(\S+) \S+\ "^"+" \d+ \d+ "(^"+)"/);
    my $line_date = ParseDate($1);

    # Check to see if the line date is in the range we're after
    next unless Date_Cmp($line_date, $check_date)>0;

    # If the referer is new, we set to 1 entry, otherwise increment (incrementing undef doesn't work well)
    if (!$referers{$2}) {
    } else {

my $row = 0;

# Sort our referers by the number of hits
for (sort {$referers{$b} <=> $referers{$a}} keys %referers) {
    # break out after the tenth one
    last if $row++==10;
    print "$_: ".$referers{$_}."\n";

Recent data: - - 15/Dec/2002:14:52:13 -0500 "GET /images/69.gif HTTP/1.1" 200 1348 "" "Mozilla/4 .0 (compatible; MSIE 5.5; Windows 98)" - - 15/Dec/2002:14:52:13 -0500 "GET /images/header_aod2_01.gif HTTP/1.0" 200 2011 " ml" "Mozilla/4.79 en (Windows NT 5.0; U)" - - 15/Dec/2002:14:52:13 -0500 "GET /images/header_aod2_15.gif HTTP/1.0" 200 4162 " ml" "Mozilla/4.79 en (Windows NT 5.0; U)" - - 15/Dec/2002:14:52:13 -0500 "GET /images/header_aod2_10.gif HTTP/1.0" 200 3034 " ml" "Mozilla/4.79 en (Windows NT 5.0; U)" - - 15/Dec/2002:14:52:13 -0500 "GET /images/go_blue.gif HTTP/1 .0" 200 133 "" "Moz illa/4.79 en (Windows NT 5.0; U)" - - 15/Dec/2002:14:52:13 -0500 "GET /images/aod_searchend2.gif HTTP/1.0" 200 186 " l" "Mozilla/4.79 en (Windows NT 5.0; U)" - - 15/Dec/2002:14:52:13 -0500 "GET /images/coheader2_aod_08.gif HTTP/1.1" 304 - " " "Mozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; Q312461)" - - 15/Dec/2002:14:52:13 -0500 "GET /images/coheader2_aod_10.gif HTTP/1.1" 304 - " " "Mozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; Q312461)" - - 15/Dec/2002:14:52:13 -0500 "GET /images/email.gif HTTP/1.0 " 200 138 "" "Mozil la/4.79 en (Windows NT 5.0; U)" - - 15/Dec/2002:14:52:14 -0500 "GET /forums/showthread.php?s=&po stid=177042 HTTP/1.1" 200 7302 "-" "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1 .0.1) Gecko/20021003" - - 15/Dec/2002:14:52:14 -0500 "GET /images/coheader2_aod_11.gif HTTP/1.1" 200 954 " 44" "Mozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; Q312461)"

In reply to Re: Re: Re: Re: Pulling by regex II by mkent
in thread Pulling by regex II by mkent

Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post; it's "PerlMonks-approved HTML":

  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.
  • Log In?

    What's my password?
    Create A New User
    [choroba]: i.e. I know JSON::Schema, I'm just curious whether there's a ready solution to plug it into a web service

    How do I use this? | Other CB clients
    Other Users?
    Others having an uproarious good time at the Monastery: (8)
    As of 2016-12-08 12:57 GMT
    Find Nodes?
      Voting Booth?
      On a regular basis, I'm most likely to spy upon:

      Results (141 votes). Check out past polls.