Here is my Perl-script to monitor my own progress:
use strict;
use warnings;
use LWP::UserAgent;
use HTML::TableExtract;
use DateTime;
die "usage: perl $0 monk password seconds\n" unless $#ARGV == 2;
my ( $monk, $pass, $secs ) = @ARGV;
print "Querying the monastery once every $secs seconds for monk $monk\
+'s reputation.\n";
$secs = 10 if $secs < 10;
while(1) {
my $ua = LWP::UserAgent->new;
$ua->agent("PMReputation");
my $res = $ua->post( 'http://perlmonks.org/?',
{"node_id" => "3559",
"op" => "login",
"lastnode_id" => "3559",
"user" => $monk,
"passwd" => $pass,
"expires" => "+10y",
"length" => "500",}
);
die "Cannot enter the monastery ($res->status_line).\n" unless $res-
+>is_success;
my $te = HTML::TableExtract->new( headers => [ '#', 'User', 'Experie
+nce', 'Level', 'Writeups', 'User Since', 'Last Here' ] );
$te->parse( $res->content );
my $writeups = 0;
my $exp = 0;
my $level = "";
my $rank = 0;
my $total = 0;
foreach my $ts ($te->tables) {
foreach my $row ($ts->rows) {
$total = $row->[0];
if( $row->[1] eq $monk ) {
($rank, $exp, $level, $writeups) = @$row[0,2,3,4];
}
}
}
my $now = DateTime->now( time_zone => 'Europe/Berlin' );
my $text = $now->dmy.",".$now->hms.": $level $monk has experience of
+ $exp and $writeups write ups, Saint $rank/$total.\n";
print $text;
if( open my $log, ">>", "narcissistic.txt" ) {
print $log $text;
close $log;
}
sleep( $secs-3 );
}