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;