http://www.perlmonks.org?node_id=168673

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);