Jan Eden wrote:
> Hi,
> 
> I need to store a list of month names into a hash structure such that:
> 
> $self->{monate}->{1}->{bezeichnung} = 'Januar'
> $self->{monate}->{2}->{bezeichnung} = 'Februar'
> etc.
> 
> Until now, I have used the rather clumsy:
> 
> @month_hash{1..12} = ("Januar", "Februar", "März", "April", "Mai",
> "Juni", "Juli", "August", "September", "Oktober", "November",
> "Dezember");  
> 
> for (sort keys %month_hash) { $self->{monate}->{$_}->{bezeichnung} =
> $month_hash{$_}; } 

You don't need to sort the keys, you don't need the arrows between adjacent
braces, and you can use the 'for' modifier to make the statement a bit more
readable:

   $self->{monate}{$_}{bezeichnung} = $month_hash{$_} for 1..12;

> 
> The following did not work:
> 
> @{$self->{monate}->{1 ..12}->{bezeichnung}} = ("Januar", "Februar",
> "März", "April", "Mai", "Juni", "Juli", "August", "September",
> "Oktober", "November", "Dezember");  
> 
> Is there a better way to do it? These references are making my brain
> swirl. 

If you want to avoid using %month_hash and want to use a list initializer,
you could do something like:

   my $n = 0;
   $self->{monate}{++$n}{bezeichnung} = $_ for qw/
      Januar Februar März April Mai Juni 
      Juli August September Oktober November Dezember
   /;

--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to