Beefy Boxes and Bandwidth Generously Provided by pair Networks
We don't bite newbies here... much
 
PerlMonks  

Resume logger

by turnstep (Parson)
on Apr 07, 2000 at 21:04 UTC ( #7138=sourcecode: print w/ replies, xml ) Need Help??

Category:
Author/Contact Info turnstep
Description: Small script to check if anyone has looked at my online resume, and if so, mails the information to me. Run as a periodic cronjob; exits silently if no new matches are found.
#!/usr/bin/perl -- -*-fundamental-*-

## Resume logger
## Greg Sabino Mullane, greg@turnstep.com, 0x14964AC8
## Note: your log format and mail program may vary:
## Try local 'sendmail' or use Mail::Mailer

use strict;

my($mail, $mailto, $mailfrom, $subject);
my($accesslog, $resumelog, $mydomain, $mypage);
my(@fresh, %seenit, %seenIP, %visits);
my($x);

$mail      = "/usr/bin/mail"; ## Paranoia is a Good Thing
$mailto    = "resume\@example.com";
$mailfrom  = qq["Abe Lincoln" <alincoln\@example.com>];
$subject   = "More resume nibbles";

$accesslog = "/foo/bar/logs/access_log";
$resumelog = "/home/alincoln/jobs/resume.log";
$mydomain  = "turnstep"; ## Use if server has >1 domain...
$mypage    = "/resume.html";

## Load our old data:
open(OLD, "+< $resumelog") || die "Could not open $resumelog: $!\n";
while(<OLD>) {
  $seenit{$_}++; ($x) = split(/ /,$_); $seenIP{$x}++;
}

## Anything new in the logs?
open(ACCESSLOG, "$accesslog") || die "Could not open $accesslog: $!\n"
+;
while(<ACCESSLOG>) {
  ## Crude match: refine if other pages contain $mypage
  next unless m/^$mydomain (.*?) (.*$mypage.*\n)/;
  $seenit{"$1 $2"} || push(@fresh, "$1 $2") && $visits{$1}++;
}
close(ACCESSLOG);

## Bail if nothing new:
@fresh || exit; ## perl closes OLD for us. Isn't that nice?

## Add new entries to the end of OLD:
print OLD @fresh; close(OLD);

## Mail it to us:
open(MAILME, "| $mail -t $mailto") || die " Could not start $mail: $!\
+n";
print MAILME "From: $mailfrom\n";
print MAILME "Subject: $subject.\n\n";
for (@fresh) {
  ($x) = split(/ /, $_);
  $seenIP{$x} ||=0;
  print MAILME "\tThis time: $visits{$x} Prior: $seenIP{$x}\n$_\n\n";
}
close(MAILME);
exit;

Comment on Resume logger
Download Code

Back to Code Catacombs

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: sourcecode [id://7138]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others pondering the Monastery: (5)
As of 2015-07-05 03:36 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (60 votes), past polls