Fun twist... a Camel Kook huh? ;)

I noticed one thing that perhaps you're doing intentionally to throw us off the trail, or perhaps it's just a mistake. If it's a mistake it could cause trouble in less trivial code, so I thought I'd mention it. It happens to be the only issue that prevents your program from running cleanly under use warnings;

@l[5] isn't how you get at the 6th element of $l. What you really mean is $l[5]. Perl understood in this case, but if you turn on warnings (use warnings;) you get a bunch of warnings alerting you to the problem. Of course in a JAPH you might have done this to throw us off. But if it was unintentional, just take note that when talking about an entire array, you start with @, but when talking about one element, you start with $.

That said, I also took a minute to sort it all out. What follows is a mildly de-obfuscated version with comments explaining what is going on. I went ahead and reduced the shell-game a little bit by boiling variable assignments down to their final values.

use warnings; use strict 'refs'; my %a = ( b => 'a', z => 'c', n => 'o' ); my @l = qw/o r t n k l e m/; my $r = sprintf('%x', 15); # $r = 'f'. print "\U$r\E" . "$l[1]$a{'b'}"; # prints 'Fra' foreach $_ (3 .. 4) { print "$l[$_]"; # prints 'nk' } # prints ', Just Another Ca' print ', Jus' . "$l[2]" . ' ' . "\u$a{'b'}$l[3]$l[0]$l[2]h$l[6]$l[1] \u$a{'z'}$a{'b'}"; for ($r = 7; $r > 4; --$r) { print "$l[$r]"; # prints 'mel' } # prints 'Kook' print " \u$l[4]$a{'n'}$a{'n'}$l[4]";

Or... expressed golf-style in fewer keystrokes...

%a=(qw/b a z c n o/);@l=qw/o r t n k l e m/;$r=sprintf('%x',15); print"\U$r\E$l[1]$a{b}";print$l[$_]for 3..4;print ", Jus$l[2] \u$a{b}$l[3]$l[0]$l[2]h$l[6]$l[1] \u$a{z}$a{b}"; for($r=7;$r>4;--$r){print$l[$r]}print" \u$l[4]$a{n}$a{n}$l[4]"

Of course the second version won't run under strictures, and it would spit out some warnings if use warnings was turned on, but this is golf. ;)

Again, good job.

Dave

"If I had my life to do over again, I'd be a plumber." -- Albert Einstein


In reply to Re: My First Japh by davido
in thread My First Japh by MF

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.