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.