Austin Hastings writes:
>
>
> > -----Original Message-----
> > From: Abhijit A. Mahabal [mailto:[EMAIL PROTECTED]
> > Sent: Thursday, 15 April, 2004 05:13 PM
> > To: [EMAIL PROTECTED]
> > Subject: Array/Hash Slices, multidimensional
> >
> >
> > As the hash syntax is being worked out, I thought it'd be a good time to
> > ask if the following will be supported in some form:
> >
> > If I have some structure like %foo{"monday"}, %foo{"tuesday"} etc,
> > I can set their values enmass using:
> > %foo<<monday tuesday wednesday>> = <<a b c>>;
> >
> >
> > What if I had
> > %foo{"monday"}{"food_expenditure"} = 10;
> > %foo{"tuesday"}{"fuel_expenditure"} = 100;
> > %foo{"monday"}{"food_expenditure"} = 15;
> > %foo{"tuesday"}{"fuel_expenditure"} = 150;
> >
> > Can I say %foo... = <<10 100 15 150>>;
> > for some definition of ...?
>
> No, but thanks to Luke Palmer's "outer" opiterator, you can get it in a
> loop.
>
> See http://www.perl.com/lpt/a/2004/03/p6pdigest/20040328.html
>
> Something like:
>
> my @workdays = <monday tuesday wednesday thursday friday>;
> my @expense_categories = <food fuel lodging travel airfare telephone
> misc>;
> my @error_prone_list_of_unremarked_numbers = (...);
>
> for outer(@workdays, @expense_categories) -> $day, $cat
> {
> %foo{$day}{$cat} = shift @error_prone_list_of_unremarked_numbers;
> }
>
> Or whatever.
Hmm.. that's all well and good, but...
sub deref (%hash, @keylist) is rw {
if @keylist == 1 {
[EMAIL PROTECTED]
}
else {
deref [EMAIL PROTECTED], @keylist[1...]
}
}
(map { deref %foo, @^x } outer(@workdays, @expense_categories)) =
@error_prone_list_of_unremarked_numbers;
That doesn't work in Perl 5, but I'm allowed to speculate. :-)
Seriously, we haven't heard the word on the new slicing semantics. All
that may be as easy as:
[EMAIL PROTECTED]@expense_categories} =
@error_prone_list_of_unremarked_numbers;
Though I'd love to be reassured or contradicted... hint, hint.
Luke