my %do_for = ( get_hosts => GetHosts($_, \%data), get_new_fw_rules => GetNewFWRules($_, \%data), ); #print "while\n"; if ( ! $do_for{$what_to_do} ) { warn "ERR - what to do $what_to_do"; }; #### sub GetHosts { my ($line, $ref_data) = @_; my ($hostname, $old_ip, $new_ip) = split /,/, $line; print "here GetHosts - " . Dumper($ref_data) . "\n"; if ($old_ip) { print "here old ip $old_ip, hostname $hostname, new ip $new_ip \n"; my $ref_data->{$old_ip}{"hostname"} = $hostname; my $ref_data->{$old_ip}{"new_ip"} = $new_ip; } } #### here GetHosts - $VAR1 = {}; ere old ip a-valid-ip-here, hostname valid-hostname-here, new ip valid-ip-here Can't use an undefined value as a HASH reference at ./fw-rule-convert.pl line 60, <$IN_FH> line 1. Can't use an undefined value as a HASH reference at ./fw-rule-convert.pl line 65, <$IN_FH> line 1.