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

I heard that comment again today.... "I wish the Random Node button would exclude all those boring empty home nodes." How many of us have clicked the Random Node button a few times, only to tire after clicking-through one too many unattended homenodes?

I wrote a quick CGI that will do this clicking-through for you. It will grab up to five random nodes and send you off to the first non-homenode it finds. This should keep you from landing on the most desolate of nodes.

Its just a quick hack and I do know how to HTML::Parse, and LWP::UserAgent so keep that in mind.

Here is the code running under mod_perl/mason:

<%INIT> use LWP::Simple; my $maxcount = 5; my $referer = $r->header_in( 'Referer' ); my ($www,$tld) = $referer =~ /(www\.)?perlmonks\.(\w+)/i; $tld ||= 'org'; my ($count,$title,$author,$node,$html); while ($title eq $author) { last if $count++ >= $maxcount; $html = get("http://perlmonks.com/index.pl?op=randomnode"); ($node) = $html =~ /\blastnode_id=(\d+)/; ($title) = $html =~ /<title>([^>]+)<\/title>/i; ($author) = $html =~ /\bby\s*<A HREF[^>]+>([^<]+)<\/A>/i; } my $redirurl = "http://${www}perlmonks.$tld/index.pl?node_id=$node"; $m->comp('/comps/redirect.cmp', url=>$redirurl); </%INIT>

Feel free to take the code and run with it, or go to your user settings and Add

<A HREF="http://perlmonks.thepen.com/scripts/randomnode.pl">Random NonHome Node</A>

to your personal nodelet.

-Blake