superstar superstar - 10 months ago 46
Perl Question

How can I check if a file exists in Perl?

I have a relative path

$base_path = "input/myMock.TGZ";

is the file name located in input folder.
The filename can change. But the path is always stored in

I need to check if the file exists in


Test whether something exists at given path using the -e file-test operator.

print "$base_path exists!\n" if -e $base_path;

However, this test is probably more broad than you intend. The code above will generate output if a plain file exists at that path, but it will also fire for a directory, a named pipe, a symlink, or a more exotic possibility. See the documentation for details.

Given the extension of .TGZ in your question, it seems that you expect a plain file rather than the alternatives. The -f file-test operator asks whether a path leads to a plain file.

print "$base_path is a plain file!\n" if -f $base_path;

The perlfunc documentation covers the long list of Perl's file-test operators: