$ perl u.pl Use of uninitialized value $file in concatenation (.) or string at u.pl line 16. Use of uninitialized value $file in concatenation (.) or string at u.pl line 21. OK, missing OK, missing OK, OK $ cat u.pl use strict; use warnings; my $f1; my $f2=''; my $f3='README'; my $dir='./xyz'; print chk($dir, $f1), ", ", chk2($dir,$f1),"\n"; print chk($dir, $f2), ", ", chk2($dir,$f2),"\n"; print chk($dir, $f3), ", ", chk2($dir,$f3),"\n"; sub chk { my ($dir, $file) = @_; return -e "$dir/$file" ? "OK" : "missing"; } sub chk2 { my ($dir, $file) = @_; return -f "$dir/$file" ? "OK" : "missing"; }