I personally think that "bare maps...maps that don't use the output of the map" are not a good idea although other Monks would disagree. Modern Perl versions don't have the older memory penalty of a anon array that cannot be deleted, but the style issue persists.
I think your code could have been written as:
foreach my $num (@$arr)
{
$hr->{$num} =1;
}
If you don't have =1, it is easier to see this in a foreach loop. And it means the same thing as your map{}.
#!/usr/bin/perl -w
use strict;
use strict;
use warnings;
use diagnostics;
use Data::Dumper;
my $arr = [1,2,3];
my $hr = undef;
foreach my $num (@$arr)
{
$hr->{$num} =1;
}
print Dumper $hr;
__END__
prints:
$VAR1 = {
'1' => 1,
'3' => 1,
'2' => 1
};