Schuyler D. Erle on Sat, 28 Jun 2003 22:35:13 -0400 |
Mark, O'Reilly is collecting cute hacks like this one at http://hacks.oreilly.com. (The relevance to Google in particular caught my eye.) It would be cool if you were of a mind to submit it there (or let me know if I can do so, with proper attribution, of course). SDE On Sat, 28 Jun 2003, Mark Dominus wrote: > > #!/usr/bin/perl > > if (! @ARGV && -t STDIN) { > @ARGV = qw(/usr/local/apache/logs/perl-access_log); > } > > while (<>) { > chomp; > my ($target, $referrer) = (split)[6,10]; > next unless $referrer =~ /google\.com/; > $referrer =~ s/"$//; > my ($q) = $referrer =~ m/(?<=[&?])q=([^&]*)/; # >)/; > next unless defined $q; > unescape($q); > $ref{$target}{lc $q}++; > } > > for my $target (sort keys %ref) { > print $target, "\n"; > for my $ref (sort keys %{$ref{$target}}) { > printf "\t%4d %s\n", $ref{$target}{$ref}, $ref; > } > } > > sub unescape { > $_[0] =~ tr/+/ /; > $_[0] =~ s/%([0-9a-fA-F]{2})/chr hex $1/ge; > } > > > > Given my apache httpd log file, the program above produces output > of several sections of the form: > > /yak/dirty/ > 3 dirty stories > 1 how to dirty talk > 1 perl regex > > which tells us that yesterday, one person arrived at > http://perl.plover.com/yak/dirty/ after doing a Google search for > 'perl regex', one after searching for 'how to dirty talk', and three > after searching for 'dirty stories'. That is, at least four of these > five people were disappointed. > > On the other hand, the corrsponding section for > > /obfuscated/ > 3 obfuscated perl code > 2 obfuscated perl contest > > suggests that those people probably got what they wanted, or something > like it. > > Perusal of the output is fun and enlightening. > > - > **Majordomo list services provided by PANIX <URL:http://www.panix.com>** > **To Unsubscribe, send "unsubscribe phl" to majordomo@lists.pm.org** > - **Majordomo list services provided by PANIX <URL:http://www.panix.com>** **To Unsubscribe, send "unsubscribe phl" to majordomo@lists.pm.org**
|
|