#!/usr/bin/perl my($currday, $day) = getDate(); for ($j=0; $j<3; $j++) { wget("http://www.dilbert.com/comics/dilbert/archive/dilbert-" . $currday . ".html", "dilbert.html"); my($imageFileName) = extractImageName(); wget("http://www.dilbert.com" . $imageFileName, "dilbert-" . $currday . ".gif"); $currday = subtractOneDay ($currday); } #create image @files = reverse(sort()); $cmd = "convert -append " . " $files[2]" . " $files[1]" . " $files[0]" . " sgi:dilbert.rgb"; system($cmd); #paste image $cmd = "bgpaste -t 0 0 0 dilbert.rgb"; system($cmd); #cleanup system("rm -f dilbert*.html*"); system("rm -f dilbert-*.gif"); system("rm dilbert.rgb"); sub getDate { my($currday, $day); open (DATE, "date +\'%Y%m%d\' | "); $currday = ; chomp($currday); close(DATE); open (DATE, "date +\'%j\' | "); $day = ; chomp($day); close(DATE); print "getDilbert.pl --> currday: " . $currday . "\n"; print "getDilbert.pl --> day: " . $day . "\n"; return ($currday, $day); } sub wget { my($remotefile,$outfile) = @_; $cmd = "wget -q -O $outfile $remotefile"; system($cmd); } sub extractImageName { open(HTML, "dilbert.html"); while() { if(/ALT=\"Today\'s Dilbert Comic\"/) { print; print "getDilbert.pl --> image name found\n"; if (/IMG SRC=\"([\w\/]+dilbert\d+\.gif)\"/) { close(HTML); return $1; } if (/IMG SRC=\"([\w\/]+dilbert\d+\.jpg)\"/) { close(HTML); return $1; } print "getDilbert.pl --> image name: " . $gifFile . "\n"; } } } sub subtractOneDay { my($date) = shift(@_); $date =~ /(\d{4})(\d{2})(\d{2})/; $year = $1; $month = $2; $day = $3; $day --; if ($day == 0) { $month --; if ($month == 0) { $year --; $month = 12; $day = 31; } else { if ($month==2) { if ($year % 4 == 0) { $day=29; } else { $day=28; } } elsif ($month==9 || $month==4 || $month==6 || $month==11) { $day=30; } else { $day=31; } } } return sprintf ("%04i%02i%02i", $year, $month, $day); }