#!/usr/bin/perl # Jeffrey Fulmer # Pulls down a random Bushism from slate.com # based on Acme::Bushisms # use LWP::Simple qw($ua get); use strict; use vars qw($VERSION $LOCK_EX $LOCK_UN); $LOCK_EX = 2; $LOCK_UN = 8; my $cache = "$ENV{'HOME'}/.bushism"; if(-e $cache){ system("cat $cache"); } else { random_bushism(); } reload(); exit; sub reload() { my $pid; if($pid = fork){ return; } elsif(defined($pid)){ dubya_get(); exit; } else { die; } } sub dubya_get() { my($dubya, $lies, $bush, @quotes); $ua->timeout(8); my $lies = get("http://slate.msn.com/id/76886/"); if(not defined $lies){ $dubya = random_bushism(); } else { ($bush) = $lies =~ /(<\/p>

.*?\".*<\/p>

)/sm; $bush =~ s/\(\s*thank.*?\)//ismg; $bush =~ s/<\/?[^p][^>]+>//g; $bush =~ s/\&\w+\;//g; $bush =~ s/("--|("|'|\s)[^\w\s\r\"\.\']{3,3})/"\n--George W Bush, /ig; $bush =~ s/[^\w\s\r\"\.\']{3,3}/--/g; @quotes = $bush =~ /

+(\".*?)

+/smg; $dubya = $quotes[rand @quotes]; $dubya = $dubya . "\n--George W Bush" unless ($dubya =~ /--George/); } $dubya =~ s/\s+$//; $dubya =~ s/(.{72,}?\S?) +(\S)/$1\n$2/g; if(open(FILE, ">" . $cache)){ flock(FILE, $LOCK_EX); print FILE $dubya . "\n"; flock(FILE, $LOCK_UN); close(FILE); } return; } sub random_bushism() { my @bushisms; $bushisms[++$#bushisms] = <