NOTE: use Perl; is on undef hiatus. You can read content, but you can't post it. More info will be forthcoming forthcomingly.
All the Perl that's Practical to Extract and Report
Stories, comments, journals, and other submissions on use Perl; are Copyright 1998-2006, their respective owners.
Why is $array[0] such a bad thing? (Score:1)
Jason
Re:Why is $array[0] such a bad thing? (Score:1)
@$array[0] binds the @ more tightly than the [0], so it expects $array to be an array ref, which you're de-referencing, rather than $array[0] being the array ref. Except it doesn't work, because as you know, you don't say @x[0], you say $x[0], so when you say @$array[0], it thinks you're dereferencing $array, not @array, and $array doesn't exist (well it might, but it's not what you meant).
Now @{$x[0]} will give you the de-referenced array in the first entry in the @x array. Because here we're being explicit about the precedence using curlies to bind it. But it can get a bit more confusing, because say you wanted the second entry in the first array? i.e. given:
my @x = ([1,2], [3,4]);
So you want the "2" above. Now that's:
my $two = @{$x[0]}[1];
But we got a scalar! Now what happened to that "symbol means context" thing here? Screwey, huh?
Fixing this is a Good Thing (tm).
Reply to This
Parent