in reply to Re: Referencing the locals
in thread Referencing the locals
although I probably don't want to refer to the array as @{$animals{'cat'}} for the rest of the program, so I guess I could addmy @cat = @{$animals{'cat'}}; my @dog = @{$animals{'dog'}}; my @pig = @{$animals{'pig'}};
Note that makes a shallow copy of the array - personally I'd write my $cat = $animals{cat};, and if it's just a simple array and not a nested structure I'd write $$cat[$i] to access it (though many people also prefer the $cat->[$i] syntax).
Note that as of Perl 5.24, you can write $animals{cat}->@* instead of @{$animals{cat}} (in 5.20 and 5.22 this needed a use feature 'postderef';). Also, as of 5.22 there's the still experimental Assigning to References, where you can say \my @cat = $animals{cat}; and have @cat be an alias to the arrayref, which IMHO is really nice, but the feature is still experimental so it is subject to change!
Update: A few more comments:
There's also the option of just repeating the whole code block three times over instead of looping. I suppose that's alright, but doesn't really strike me as beautiful code.
I agree, DRY applies.
The text about "why it's stupid to use a variable as a variable name" makes a good point, generally. ... But that's not really applicable here
I think the point is more to make a case for why strict is a good thing.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^3: Referencing the locals
by Chuma (Scribe) on Apr 29, 2021 at 11:57 UTC | |
by haukex (Archbishop) on Apr 29, 2021 at 12:35 UTC | |
by Chuma (Scribe) on Apr 29, 2021 at 14:27 UTC | |
by haukex (Archbishop) on Apr 29, 2021 at 14:37 UTC | |
by Chuma (Scribe) on Apr 29, 2021 at 15:28 UTC | |
|