Hi I'm totally new to the list and havent a clue about coding. gotta start somewhere tho :-)
Interesting signature. One thing I dont get though is, why when i change any of the backwards text does it stop the output from working? Austin ----- Original Message ----- From: "Tassilo von Parseval" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Cc: "Sparrow, Dave" <[EMAIL PROTECTED]> Sent: Wednesday, June 18, 2003 12:39 PM Subject: Re: Tassilo's email signature > On Wed, Jun 18, 2003 at 09:44:58AM +0100 Sparrow, Dave wrote: > > A regular contributor to the Perl Quiz Of The Week discussion newsgroup > > ([EMAIL PROTECTED]) is Tassilo von Parseval. > > Actually even more regularly to this list here so I can respond... > > > His email signature is reproduced below. I have no idea what it does > > and can't get it to run. > > You can't get it to run? For me: > > [EMAIL PROTECTED]:~$ perl > $_=q#",}])!JAPH!qq(tsuJ[{@"tnirp}3..0}_$;//::niam/s~=)]3[))_$-3(rellac(=_$({ > pam{rekcahbus})(rekcah{lrePbus})(lreP{rehtonabus})!JAPH!qq(rehtona{tsuJbus#; > $_=reverse,s+(?<=sub).+q#q!'"qq.\t$&."'!#+sexisexiixesixeseg;y~\n~~dddd;eval > __END__ > Just another Perl hacker,[EMAIL PROTECTED]:~$ > > There shouldn't be anything platform dependent in it. However, for this > JAPH whitespace does matter. So you need to copy it as one string and > not concatenate it together. Must be three lines separated by newline. > > The basic idea is simple. It has some Perl code that is backwards and that > is evaled after some processing. A common JAPH-pattern. The string is: > > ",}])!JAPH!qq(tsuJ[{@"tnirp}3..0}_$;//::niam/s~=)]3[))_$-3(rellac(=_$({ > pam{rekcahbus})(rekcah{lrePbus})(lreP{rehtonabus})!JAPH!qq(rehtona{tsuJbus#; > > It is wrapped in '$_=q#....#;' to obfuscate it a little and to assign to > $_. > > Next is > > $_=reverse, > > which turns the above into > > subJust{another(qq!HPAJ!)}subanother{Perl()}subPerl{hacker()}subhacker{map > {($_=(caller(3-$_))[3])=~s/main:://;$_}0..3}print"@{[Just(qq!HPAJ!)]}," > > That now already looks more like Perl. After that a substitution against > that happens: > > s+(?<=sub).+q#q!'"qq.\t$&."'!#+sexisexiixesixeseg; > > Of course, the many x and s modifiers are spurious (just used to pad my > signature nicely). So actually it is: > > s/(?<=sub)./q#q!'"qq.\t$&."'!#/sieeeeeg; > > This turns the above string into: > > sub Just{another(qq!HPAJ!)}sub another{Perl()}sub > Perl{hacker()}sub hacker{map > {($_=(caller(3-$_))[3])=~s/main:://;$_}0..3}print"@{[Just(qq!HPAJ!)]}," > > It is really just used to add a whitespace between the keyword 'sub' and > the function name. Writing it properly formatted yields: > > sub Just { > another("HPAJ"); > } > sub another { > Perl(); > } > sub Perl { > hacker(); > } > sub hacker { > map { ($_ = (caller(3 - $_))[3]) =~ s/main:://; $_ } 0 .. 3 > } > > print "@{[ Just("HPAJ") ]},"; > > The 'y~\n~~dddd;' is the same as > > tr/\n//d; # deletes all newlines > > It's not important and could be left off. Eventually we have some Perl > code in $_ and simply run it with eval(). > > The above code consists of one print() statement that calls Just(). > Just() calls another(), another() calls Perl() which in turn calls > hacker(). Finally hacker() looks back in the caller-stack and extracts > who called whom: > > (caller(3))[3] == "main::Just"; > (caller(2))[3] == "main::another"; > (caller(1))[3] == "main::Perl"; > (caller(0))[3] == "main::hacker"; > > It strips off the main:: part and returns the list qw(Just another Perl > hacker) which - because it is interpolated in double quotish strings - > stringifies to "Just another Perl hacker". > > If you like JAPHs you should have a look at those of Abigail in > particular ('perldoc -q JAPH' links to a couple of those by him, too). > It's consensus that he has written the most obscure and funniest JAPHs > around. > > Tassilo > -- > $_=q#",}])!JAPH!qq(tsuJ[{@"tnirp}3..0}_$;//::niam/s~=)]3[))_$-3(rellac(=_$({ > pam{rekcahbus})(rekcah{lrePbus})(lreP{rehtonabus})!JAPH!qq(rehtona{tsuJbus#; > $_=reverse,s+(?<=sub).+q#q!'"qq.\t$&."'!#+sexisexiixesixeseg;y~\n~~dddd;eval > > > -- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]