Beefy Boxes and Bandwidth Generously Provided by pair Networks
Keep It Simple, Stupid
 
PerlMonks  

(jeffa) Re: Array to hash refs

by jeffa (Bishop)
on Aug 13, 2002 at 16:06 UTC ( [id://189847]=note: print w/replies, xml ) Need Help??


in reply to Array to hash refs

Here is all i could come up with:
use strict; my @a = ('a'..'f'); my $hash; my $last = 1; for (reverse @a) { $hash->{$_} = $last; $last = {$_ => $hash->{$_}}; } delete $hash->{$a[$_]} for (1..@a);
Hehehe, i waited until Abigail-II posted first though. Now i am going to spend some time figuring out how that works ... need more coffee!

UPDATE: Ok, let's figure Abigail-II's code out ...

When dealing with loops, a good way to understand the code is to chart out what happens at each iteration -
  • Iteration 1:
    • @array = ('a','b','c');
    • atomic:
      • $hash = undef;
      • $hash->{a} = $val; # $val = 1
      • $val = $hash;
    • # is ('b','c') > 1 ? yes
  • Iteration 2:
    • @array = ('b','c');
    • atomic:
      • $hash = undef;
      • $hash->{b} = $val; # $val = {a => 1}
      • $val = $hash;
    • # is ('c') > 1 ? no
  • Last line: (note that $hash is currently undef)
    • $hash->{c} = $val; # $val = {b => {a => 1}}
The key to this code is the atomic triple assignment inside the while loop. Break that into 3 seperate assignments and the results are not the same. Abigail-II++ :)

UPDATE*2:
I think i like Anony's answer the best ... now that is using Perl to write Perl! /smack forehead

jeffa

L-LL-L--L-LL-L--L-LL-L--
-R--R-RR-R--R-RR-R--R-RR
B--B--B--B--B--B--B--B--
H---H---H---H---H---H---
(the triplet paradiddle with high-hat)

Replies are listed 'Best First'.
Re: (jeffa) Re: Array to hash refs
by Abigail-II (Bishop) on Aug 14, 2002 at 09:18 UTC
    You can break it into 4 separate assignments though....

    Abigail

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://189847]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others avoiding work at the Monastery: (4)
As of 2024-03-28 22:40 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found