Code Art
One thing that I loved about programming Perl in the early 2000's was the Perlmonks community, which was a wonderful combination of quirky and smart.
Their question-and-answer voting system predated Stack Overflow by many years, but the "Obfuscated Perl" forum is where I contributed to the most.
Here are some my posts from between 2001 and 2010.
All of the code is executable Perl.
It Came From the Crypt()
$q= q&9RM 8 ba1c HtJprcG 6SJ3dk aQM 8 p j p8vsY i3UnT f kcRJk9w xW2v h2GVK3 YL1gNvf YEX dBQdE TIdpMu WD9Y CAvK0 BrsuKn9kXUwk aNpj8q ISZgRZkUg2I8W9jJsG8Rg9yeE8LvqZR7A Ho PDIRVAVCgafA9MZjFb31Ea5bqr7gCg X zPpgkPsHjTP8iC2TtVYE0PUR b z Y b3 EQiZrZiIm6Nc81WY qs U g 7m QzHM2VjY62II5Bg 7N e k kt 7 5JLD86&;$u=$q =~ s & \s &&xg&&-2;@v= unpack q &c3&,qq&i\nm &; unshift@v,2 ** 2*2**2*2;%l = map{chr$_} reverse@v;$i =2*2*2&&$q,$q =$i&&8; while( $i=~m& [^ *]{$q} &x){$y = substr (crypt( $&,$&), $u,print );print ! $l{$y} &&$y ne "y"?$y: $l{$y} ;$i=~ s+$&+ +x }$y=~m &ymum ~ my&
Brilliant Idea!
! ! ! ! ! ! ! i ;$_=join( q!!=>map{$!=$!& 0;map{s$![^\]! =s!! \$x-Y\\[@!]!Y=$! =$x ;$!+=s$[q!=>\$x-Y= [@! ]$!={$g}@$_;$g=i&& q!! . chr ($! +0x3E)}([\\$!=>{!! !$! =>! chr , [!$!]}]=>[\$!=>\$!=>\$! =>[!$!]]=>[\$!=>\$!=> {$!=>[$!]}=>{!$!=>[ $!]}]=>[\\$!=>{$! =>[Y]}]=>[\$!=> {$!=>[!$!]}=> \\!$!]=>[ \\$!])) ; print => ! ! print=> ! ! print => ! print=> print => print
Monolith
# A tribue to 2001: A Space Odyssey $_=q{earth->dawn("man"); goto^@$monolith/=0;bless %humanity;bone->throw(); *year+=10000;#tycho=TMA1 USS_Discovery->(Jupiter) [::]>>>=<>=<>=<>==<>=(-) ;require 2001;#if($error exists($HAL_Malfunction) #open($podBayDoors,HAL.) or die(); HAL9000->ask(" What_are_you_doing_Dave? ");sing("Daisy")*|sleep} ;@universe=qw#15 01 06 4 01 01 12 2 22 2 14 01 11 02 00 5 25 1 38 3 07 2#; my$God;$monolith="*****" ;@light=split/[~^;|]/,$_ ;;while(my($space,$time) =splice(@universe,0,2)){ $stargate =shift @light; eval qq+$stargate+;$warp =substr($@,$space,$time) ;$space=>print uc $warp; $warp;$warp;$warp;$warp; $warp;$whoa;$warp;$warp; $warp;$warp;$what;$warp; $skgnsietgisernwisgsdwe; @room;*starChild;@earth}
Perl of Wisdom
use strict ; my $OO= sub{print(($_[0] ==3)?chr( 10 ):chr(68+ $_[0])) ;};my $o= qq c oooooo oOOOOO0OOO0o oOOOOOOOO...OOOo oO0OOOOO0OOOO..OOo oO0OOOOOOOOOOOO..OOo o0OOOOOOOOOOO0OOOOOo oOOOOOOOOOOOO0OOOOOo oOOOOOOOOO00OOOOO0Oo o0OOO0OOOOOOOOOOOo oOOOOOOOOOOOOOOo oOOOOOOOOOOo oooooo c; my $O0 = 0; while ( $o =~ /0 (.*?) (?= 0)/sgx){ my$O=$1;$O0=$O=~ tr/Oo//;$OO->($O0)}
DNA Code
$_=q=GCGCAT=; $AT=m++; $CG=$AT -$AT+$AT; $TG=$CG+$AT-$CG;$CAGC=$AT- $CG+$CG+$AT-$CG+$AT-$CG-$CG; $CAGTC =q;;; %CTACG =('C',$AT+$CG+$TG-$AT-$CG +$CG-$TG,'A',$CG-$AT+$CG- $AT-$TG- $CG+$AT- $CG+$TG+ $CG,'T',$AT+$TG-$CG+$TG+$AT -$CG+$AT-$TG-$CG+$AT+$CG,'G', $CG-$AT- $TG-$CG+ $AT+$TG+ $TG+$CG-$AT+$CG);$GCA=$CTACG {T}**$CTACG{G}+$CG;$CTG=$GCA *$GCA; $GGC= $GCA/( $AT+$AT);open(CGGCTA,$0); while($CTGCAC=<CGGCTA>){if( $CTGCAC =~m#( q()(q) )#x){$CAGC=$AT+$AT-$CG}if ($CAGC){($CGTC)=($CTGCAC =~m#^ \s*( [ACGT ])#x);if($CGTC){$CAGTC.= $CGTC}}}close(CGGCTA);@CGC= ($GCA, ($CTG- ($GCA+$GCA+$GGC+$TG)),($CTG+$GCA+$GCA-$CTACG{T}), ($CTG +$GCA +$GGC),($CTG+$GCA+$GGC+$CG),($GCA*$CTACG{T})+$CTACG {G},( $GCA* $CTACG{T}*$CTACG{G})+$GGC,$GCA+$CTG,$CTG+$CG+ $GCA, $GGC+ $CTG-$TG,$CG+$CTG,$CTG+$GGC+$GCA-$AT,$CTG-$GCA- $GCA,$CTG +$GCA-$TG-$CG,$CTACG{T}*$CTACG{T}*($TG**$CG)*($GCA -$CTACG {G}),$CTG-$CTACG{T},$CTG-$CG,$CTG+$GCA-$CTACG {T});@GC= split/T+/,$CAGTC;for $TTC(@GC){$CGTC=$AT-$CG +$AT -$CG -$AT-$CG+$AT+$CG;$CTGCAC=$AT-$CG+$CG-$AT+$AT-$CG; while($CTCCGA=substr($TTC,$CTGCAC,$AT)){$CGTC +=$CTACG{$CTCCGA}*(($CG+$TG+$CG-$AT+$CG )**$CTGCAC);++$CTGCAC;}print chr($CGC[$CGTC]);}$CTCCGA = qq; A -- -- T T -- -- A C --- -- G T --- --- A G ------- C T ----- A A --- T C - G T T - A C ----- G C ------- G T ------- A G ------- C C ----- G T --- A A - T G T - A T ----- A C ------- G G ------- C T ------- A T ----- A G --- C G - C T C - G C ----- G T ------- A A ------- T A ------- T C ----- G T --- A C - G A C - G T ----- A G ------- C A ------- T C ------- G T ----- A G --- C C - G T T - A A ----- T C ------- G C ------- G T ------- A C ----- G A --- T C - G T G - C A ----- T C ------- G T ------- A C ------- G C ----- G C --- G T - A G C - G T ----- A G ------- C C ------- G C ------- G T ----- A A --- T G - C C T - A T ----- A C ------- G G ------- C C ------- G T ----- A G --- C G - C C T - A C ----- G A ------- T C ------- G T ------- A G ----- C A --- T C - G T A - T T ----- A A ------- T ; ;
Stayin' Alive (With CPAN)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ STAYIN' ALIVE (WITH CPAN) - LYRICS ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Well, you can tell by the way I use File::Lock, I'm a Perl Monk, no time to talk. Got DBI and Test::More, been reusin' code since version four. You know it's all right. It's okay. With GD::Graph and Class::Flyweight. We don't have time to reinvent, so we get it from CPAN. Whether you're a hacker or whether you're a slacker, you're stayin' alive, stayin' alive. Net communicatin' and input validatin', and we're stayin' alive, stayin' alive. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ah, ha, ha, ha, stayin' alive, stayin' alive. Ah, ha, ha, ha, stayin' alive. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Well now, I search low and I search high, If I used Java, I think I'd die. Got lots of modules from which to choose, I'm a Perl hacker and I just can't lose. You know it's all right. It's okay. With Finance::Quote and Text::Template. We don't have time to reinvent, so we get it from CPAN. Whether you're a hacker or whether you're a slacker, you're stayin' alive, stayin' alive. Date manipulatin' and web authenticatin', and we're stayin' alive, stayin' alive. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ah, ha, ha, ha, stayin' alive, stayin' alive. Ah, ha, ha, ha, stayin' alive. Code goin' nowhere. Somebody help me. Somebody help me, yeah. Code goin' nowhere. Somebody help me. Somebody help me, yeah. Stayin' alive. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Well, you can tell by the way I use Proc::Lock, I'm a Perl Monk, no time to talk. Got CGI and Tk::More, and I grok the Schwartzian Transform. You know it's all right. It's okay. With Net::POP3 and Sort::Array. We don't have time to reinvent, so we get it from CPAN. Whether you're a hacker or whether you're a slacker, you're stayin' alive, stayin' alive. String transliteratin' and SQL generatin', and we're stayin' alive, stayin' alive. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ah, ha, ha, ha, stayin' alive, stayin' alive. Ah, ha, ha, ha, stayin' alive. Code goin' nowhere. Somebody help me. Somebody help me, yeah. Code goin' nowhere. Somebody help me. Somebody help me, yeah. Stayin' alive. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Angsty Poetry
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Inspired by Rik, the People's Poet (RIP) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # Wall oh Larry Wall, sometimes it must be difficult not to feel at all that you really are a wall. when Python programmers try to push you over it, are they the ones that fall? or are you, Larry Wall? or *are* you Larry Wall? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # NodeReaper NodeReaper near my code taking showers that are cold, but always near my code. NodeReaper, are you coming to my node? or am I coming to yours? we're in different threads, NodeReaper, but we're both using strict. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # Job Anguish Poem oh god, why am I the only Perl programmer in my company? why must I write code into the late hours of the night, long after everyone has gone home? I bet I'm the first person who's ever felt as lonely as this. could it be that I'm going to grow up to be a great guru and visionary, and all those Java monkeys at my job are going to end up in the unemployment lines when the economy takes a dive? yes, I think it could. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~