my $target = 'foo.txt'; my $file = do { my $target = undef; foreach my $dir( qw{ /tmp /var/tmp /foo /bar } ) { my $t = "$dir/$target"; # nb: you might want to use -e here # but -f might be what you *really* want, YMMV if( -f $t ) { $target = $t; last; } } $target; }; if( $target ) { open IN, $target or die "Cannot open $target for input: $\n"; # ... } else { die "Can't find $target.\n"; }