Yes, you could do that but a Perl-style loop (see Foreach Loops) might be more idiomatic than a C-style one (For Loops). In fact, for and foreach are synonymous and can both be used interchangeably for either style of loop.
$ perl -Mstrict -Mwarnings -MData::Dumper -E '
> my @names = qw{ A B C D };
> my %order;
> foreach my $name ( @names )
> {
> $order{ $name } = $name;
> }
> print Data::Dumper->Dumpxs( [ \ %order ], [ qw{ *order } ] );'
%order = (
'A' => 'A',
'D' => 'D',
'C' => 'C',
'B' => 'B'
);
$
Another way to construct the hash would be to use a map instead of the foreach.
$ perl -Mstrict -Mwarnings -MData::Dumper -E '
> my @names = qw{ A B C D };
> my %order = map { $_ => $_ } @names;
> print Data::Dumper->Dumpxs( [ \ %order ], [ qw{ *order } ] );'
%order = (
'A' => 'A',
'D' => 'D',
'C' => 'C',
'B' => 'B'
);
$
I hope this is helpful.
|