This snippet searches a series of directories for a file. For instance, you
may want to open the file 'foo.txt', but it could be in any one of a number
of directories, so you want to search them one after the other until you find it.
An analogy would be the way a shell finds a program based on the value
of the PATH environment variable.
asdfgroup's remarks noted.
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";
}