$log = "/home/tsec/prototype/logs/extractedlogs/cowrieresult.log"; open(DATA, $log) or die "Can't open '$log': $!"; sub tester() { while(){ ... } for my $ip (keys %HONEY){ ... } for my $data (sort @DATA){ ... } } #### my $log = '/home/tsec/prototype/logs/extractedlogs/cowrieresult.log'; open(my $data, '<', $log) or die "Can't open '$log' for reading: $!"; tester($data); close $data or die "Can't close '$log': $!"; sub tester { my ($fh) = @_; while (<$fh>) { ... } ... }