#!/usr/local/bin/perl # Generates two Zappa quotes. # One small one for inclusion on the homepage and one with context for # the Quote page. # # Robbert Heederik, heederik@fwi.uva.nl, 16 April 1995 # chdir "/home/heederik/public_html/zappa/quote"; srand(time() % $$); # &display_fortune('phrases',1024,'quote.inc','info.inc'); # &display_fortune('phrases',4,'small.inc','none'); # only to standard output (-) &display_fortune('phrases',1024,'-','-'); sub display_fortune { local($fortunefile,$maxlines,$output,$output2) = @_; local($count,$pick,$number,$info); local(@quote,@info); open(INPUT, $fortunefile) || die "Couldn't open '$fortunefile': $!\n"; # count fortunes while () { $count++ if (/^%%$/); } # rewind seek(INPUT, 0, 0); # pick random fortune $pick = rand($count) + 1; #printf("get number %d from %d fortunes\n", $pick, $count); $number = 1; while () { last if (/^%%$/ && ++$number >= $pick); } # get quote while () { last if (/^%%$/); if (/^--$/) { $info = 1; last; } push(@quote, $_); } # get info while () { last if (! defined($info)); last if (/^%%$/); push(@info, $_); } if ($#quote >= $maxlines) { return &display_fortune(@_); } open(OUTPUT, ">$output") || die "Couldn't write to '$output': $!\n"; for(@quote) { print OUTPUT; } close(OUTPUT); if ($output2 ne 'none') { open(OUTPUT, ">$output2") || die "Couldn't write to '$output2': $!\n"; for(@info) { print OUTPUT; } close(OUTPUT); } }