$Just = $0; open(JAPH, $Just); @another = split(/\s/,The only thing I'd like to really do, is figure out how to remove the readability in the function names and stuff. I tried looking at B::Deparse, which was mentioned in one of these nodes. But I don't think thats what will do it for me... ~~Joe); $Perl = ""; $hacker =","; $Perl =join(" ", (substr($another[0],1)),(substr($another[5],1)),(substr($another[9],1)),(substr($another[12],1))); close(JAPH); print ($Perl . $hacker);
First of all, welcome to the OC [id://565838].
Not every JAPH has to be obfuscated and I like where you are going with this. I think some perlism would improve it though. Removing parens and the close statement ( perl doesn't need them.)
$Just = 'foo'; open(JAPH, $Just); @another = split(/\s/,I had to put in the 'foo' cause I'm on unix. Now, adding a subroutine.); $Perl = ""; $h acker =","; $Perl =join " ",(substr $another[0],1),(substr $another[5],1),(substr $another[9 ],1),(substr $another[12],1); print $Perl . $hacker;
$Just = 'foo'; open(JAPH, $Just); @another = split(/\s/,Kind of has a stutter now doesn't it? Continuing on boldly. Playing with whitespace:); $Perl = ""; $h acker =","; sub Just { substr shift, 1 }; $Perl =join " ", Just($another[0]), Just($another[5]), Just($another[9]), Just ( $another[12]); print $Perl . $hacker;
$Just = 'foo'; open JAPH, $Just; @another = split /\s/,There, that's better. Not there yet. I would like it to be shorter but it's late here.; $Perl = ""; $hac ker =","; sub Just { substr shift, 1 }; $Perl = join " ", Just ($another[0]), Just($ another [6]), Just($another [11]), Just ($another [14]); print $ Perl .$ hacker,
$Just = $0; open JAPH,$Just; @another = split /\s/,I set the $Perl variable to a whitespace, which makes it so you can fit the whole thing on just two lines. Then I played with the whitespace enough so that the words for "Just another Perl Hacker," are on spaces of multiple 5. Since now its a simple loop. Here's a shorter version:; $Perl = " "; $hacker = ","; sub Just { substr shift , 1 }; $Perl = join $Perl, Just ($another[0]), Just ($another[5]), Just ($another[10]), Just ($another[15]); print $Perl . $hacker,
$Just = $0; open JAPH,$Just; @another = split /\s/,254 characters. not bad, right? I think thats in the canonical limits.; $Perl = " "; $hacker =",";sub Just {substr shift,1}; for($hack = 15; $hack > -1 ; $hack -= 5){$hacker = Just($another[$hack]) . $Perl . $hacker};$hacker =~ s/\s,/,/s; print Just $Perl.$hacker,
Actually, on my previous reply where I said $scalar I should have said @array. An array is just a list.
You've done some good work there. Again, I've made some changes. Not that they are better, it's just a matter of taste.
Using an array slice you don't need the loop. Of course the loop may be more obfuscating. It all depends on whether you want size or complexity.
$ Just =$0;open JAPH, $Just;@ another =split /\s/,Slurp the whole thing in so we can break the first line wherever we want and make a little postcard.; $ Perl =" "; $ hacker =","; sub Just{}; $hacker=join' ',@another[1,5,10,15],$hacker; print Just.$Perl.$hacker,
$/='';$ Just =$0;open JAPH, $Just;@ another =split /\s+/s,206 characters; $ Perl = " "; $ hacker =","; sub Just{} ;$hacker =join' ', @another[1, 5,10,15] , $hacker; print Just.$Perl.$hacker,
No [id://565838], nothing fancy with the 'foo' which is just the name of file in which I saved the script. On unix, $0 just returns 'perl' not the path of the running script like on Windose. So I'm just doing a direct 'open' on my script to read the source.
Parens in perl is a list operator. They say package these item up as a list. If you already have a list, say in a $scalar or returned from a function call, then using parens is redundent. Arguments to function call also are passed as a list so when you say "print $a, $b" perl knows you mean "pass a list consisting of $a followed by $b". And will try very hard to make sense of your code. But perl would get confused if we used this inside another list such as "join ' ', print $a, $b , $some_other_stuff". How would perl know if $some_other_stuff went with "join" or "print"? So sometime we have to use parens to be clear to perl what we mean. But I look at a lot of the code here on perlmonks you'll see that for simple statements parens are often not used.
We all learn perl in smallish bites so hang in there.
perlmonks.org content © perlmonks.org and jfredett, starbolin
prlmnks.org © 2006 edmund von der burg (eccles & toad)
v 0.03