Beefy Boxes and Bandwidth Generously Provided by pair Networks
more useful options

RE: Things are not what they seem like.

by princepawn (Parson)
on Jul 25, 2000 at 00:04 UTC ( #24167=note: print w/replies, xml ) Need Help??

in reply to Things are not what they seem like.

I wouldlike some explanation of this code... you are clearly thundering from the great heights with this code, but w/out explanation, a poor sap like me is left in the dark.
  • Comment on RE: Things are not what they seem like.

Replies are listed 'Best First'.
RE: RE: Things are not what they seem like.
by btrott (Parson) on Jul 25, 2000 at 00:22 UTC
    Okay, here's how it works.

    Let's first clean it up (which takes all the fun out of it, but still...):

    $; = $"; $;{Just=>another=>Perl=>Hacker=>} = $/; print %;
    Looks more understandable, now, right?

    The first line sets the value of the special variable $; to the value of $". $" is the list separator and has the default value of a space. $; is the subscript separator, which is used (or used to be used) for multidimensional array emulation. As explained in perlvar. So saying

    $foo{$a, $b, $c}
    really means
    $foo{ join $;, $a, $b, $c }
    Since we've set $; equal to the value of $", the subscript separator is now a space (' ').

    Next line, then:

    $;{Just=>another=>Perl=>Hacker=>} = $/;
    Let's fix it up a bit:
    $;{Just,another,Perl,Hacker,} = $/;
    That actually isn't legal, though, because the special => makes it okay to use the barewords. If we replace them with commas, we'll get errors. And that's why we need the => after "Hacker"; if we take it off, we get an error.

    Anway, though, now it makes more sense, doesn't it? Because it looks like the example above, the example from perlvar. We're just assigning to a hash element in the hash %;.

    And $/ is the input record separator, the default of which is a carriage return ("\n"). So we assign that value to the hash element, so what we really have is something like this:

    $;{ join ' ', "Just", "another", "Perl", "Hacker", "" } = "\n";
    Which is just this:
    $;{"Just another Perl Hacker"} = "\n";
    And then we're at the last line:
    print %;
    Which is very simple. We're just printing out the hash %;, which we just assigned to. In list context, the hash is flattened to a list. This list, in fact:
    ("Just another Perl Hacker", "\n")
    And what happens when we print out that list? Just what you'd expect:
    Just another Perl Hacker
    So that's it. Doesn't it make you love Perl? :)
      Excelent use of special varibles, and excelent explanation!
      oh wow! This is Brilliant, Awesome stuff, Great explanation. Thanks a ton, and Oh Yeah it makes me go mad about Perl!

      Excellent btrott

      Thank you very much

      I cannot + vote you enough on this one

      To some, Perl is an art form. To others it is a religion. What is it to you?

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://24167]
[1nickt]: you are missing an entire element, which is that your base ticket price only gets you a middle seat. If you want to be window or aisle you must pay, or gamble that you'll be assigned there at ...
[1nickt]: ... flihght time (hoping that not enough others have paid and there are some "good" seats to be allotted.
[1nickt]: And this is in addition to paying extra if you want to be in the first 12 rows, or in the emergency exit row.
choroba was once seeted besides a guy that was so fat he was almost squished between the guy
[holli]: I'm surprised there is not an entire genre of "fat guy on a plane" jokes

How do I use this? | Other CB clients
Other Users?
Others wandering the Monastery: (10)
As of 2017-12-18 13:45 GMT
Find Nodes?
    Voting Booth?
    What programming language do you hate the most?

    Results (486 votes). Check out past polls.