Beefy Boxes and Bandwidth Generously Provided by pair Networks
Don't ask to ask, just ask
 
PerlMonks  

Re: Array loops and assignments

by rjt (Deacon)
on Jul 07, 2013 at 21:32 UTC ( #1043014=note: print w/ replies, xml ) Need Help??


in reply to Array loops and assignments

The real problem I see is that if you really are referring to values by their index (regardless of how you accomplish that), that's probably a rather serious design problem. Then again, you say:

The requirement is that 8 elements of the array be stored in separate attributes. So instead of doing a single-assignment for each attribute, I was hoping to just put it in a loop and assign it to the corresponding variable.

That's actually quite a common requirement, most often seen in sub argument processing:

my ($name, $number) = @_;

For longer and/or variable lists of arguments, hashes provide more flexibility and basically a free namespace:

#!/usr/bin/env perl use 5.012; use warnings; sub read_order_back { my %courses = ( appetizer => 'soup', salad => 'tossed', @_ ); die "No main?!" unless defined $courses{main}; print "\u$courses{appetizer} to start, followed by a\n" . "lovely $courses{salad} salad, with $courses{main}\n" . "for your entree"; print ", and finally a\nstunning $courses{dessert}" if defined $courses{dessert}; print ". Bon apetit!\n"; } read_order_back(main => 'ribs');

Output:

Soup to start, followed by a lovely tossed salad, with ribs for your entree. Bon apetit!

Update: Whoops, now I'm hungry.


Comment on Re: Array loops and assignments
Select or Download Code

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others lurking in the Monastery: (14)
As of 2015-07-02 11:08 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (34 votes), past polls