use warnings; use strict; use Data::Dumper; my @temp; $temp[12] = q{one two three }; my %hash = ( alias => { map {$_ => risolve( $_ );} split / /,$temp[12] }, ); sub risolve{ my $host = shift; open DNS, "ping -l o -n 1 $host >nil|"||die; while () {1} ### COMMENT THIS LINE AND IT WORKS close DNS; return q{four five six}; } print Dumper \%hash; #### $VAR1 = { 'alias' => { '' => 'four five six' } }; #### Use of uninitialized value in anonymous hash ({}) at wsfp-scratchpad2.pl line 11. Use of uninitialized value in anonymous hash ({}) at wsfp-scratchpad2.pl line 11. Use of uninitialized value in anonymous hash ({}) at wsfp-scratchpad2.pl line 11. #### $VAR1 = { 'alias' => { 'three' => 'four five six', 'one' => 'four five six', 'two' => 'four five six' } };