in reply to Change array to tiered hashref - brain teaser

$aref = ['one', 'two', 'three', 'four'];; $href = { pop @$aref => 1 };; $href = { pop @$aref => $href } while @$aref;; pp $href;; { one => { two => { three => { four => 1 } } } }

Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.
"Too many [] have been sedated by an oppressive environment of political correctness and risk aversion."

Replies are listed 'Best First'.
Re^2: Change array to tiered hashref - brain teaser
by wrinkles (Pilgrim) on Aug 08, 2008 at 09:10 UTC
    BrowserUK, I follow lines 1-3 (except for the ";;"). But I'm not clear on that last statement. Should "pp" print out the hash reference like in your last line? I can't find documentation for that usage, and I can't make my the script print. "print Dumper($href);" works for me.
      (except for the ";;")

      Two adjacent semi-colons act exactly the same as a single semicolon. Effectively there is a blank statement (noop) between them.

      The difference is that my REPL accumulates what I type until I finish a line with ;; at which point it executes everything I've typed so far as a single chunk of code.

      Should "pp" ... "print Dumper($href);" works for me.

      pp is just another Dumper()-like routine from Data::Dump.


      Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
      "Science is about questioning the status quo. Questioning authority".
      In the absence of evidence, opinion is indistinguishable from prejudice.
Re^2: Change array to tiered hashref - brain teaser
by jonathan415 (Novice) on Aug 08, 2008 at 07:02 UTC
    BrowswerUk: That was very good solution, and exactly what I was looking for. I kept trying to figure out how transversing a hashref will work, and your example really helped.

    I was very puzzled by this, but it makes a lot of sense, and cleared up everything for me in terms of understanding data structure. I spent the entire day on this with some really weird results. Now I understand why.