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 broader 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 that covers many situations you will encounter in practice.
File is readable by effective uid/gid.
File is writable by effective uid/gid.
File is executable by effective uid/gid.
File is owned by effective uid.
File is readable by real uid/gid.
File is writable by real uid/gid.
File is executable by real uid/gid.
File is owned by real uid.
File has zero size (is empty).
File has nonzero size (returns size in bytes).
File is a plain file.
File is a directory.
File is a symbolic link (false if symlinks aren’t supported by the file system).
File is a named pipe (FIFO), or Filehandle is a pipe.
File is a socket.
File is a block special file.
File is a character special file.
Filehandle is opened to a tty.
File has setuid bit set.
File has setgid bit set.
File has sticky bit set.
File is an ASCII or UTF-8 text file (heuristic guess).
File is a “binary” file (opposite of
Script start time minus file modification time, in days.
Same for access time.
Same for inode change time (Unix, may differ for other platforms)