http://www.perlmonks.org?node_id=168673
Description: A really short little ditty to take a file delimited by '%' characters (on lines by themselves) then randomly select an entry, then print it to the .signature file.

Literally taken straight from my ~/scripts directory, all still hardcoded. Pick it to pieces, but remember it's just a hack :)

First few lines of my .signature.rot file. Note the first line is blank, and there needn't be a trailing newline at the end:

Leo: (July 23 - Aug. 22) When driving through the desert, you should never stop and eat mysterious piles of birdseed, even if "FREE BIRDSEED" signs are stuck in them. % "Reality is that which, when you stop believing in it, doesn't go away". -- Philip K. Dick % So, Lone Starr, now you see that evil will always triumph, because good is dumb. -- Dark Helmet % Thank you for pressing the self-destruct button. This ship will self-destruct in three minutes. % Do you make up these questions, Mr. Holden, or do they write them down for you? % Yes, questions. Morphology, longevity, incept dates. % "Begun, this clone war has." Donate to the House With No Sentence Structure. Dedicated to assisting grammatically disadvantaged Jedi for over 900 years.
#!/usr/bin/perl

use IO::File;

$/ = "%";

open(FILE, "/home/hagus/.signature.rot");
while (<FILE>)
{
    $tmp = $_;
    $tmp =~ s/%//g;
    push @a, $tmp;
}
close(FILE);

my $fh = new IO::File("/dev/urandom", "r");

my $foo = $fh->read($value, 100);

$fh->close();

my $num = unpack("S*", $value);

my $index = $num % (@a + 0);

open(FILE, ">/home/hagus/.signature");
print FILE $a[$index] . "\n";
close(FILE);