File::Basename
use File::Basename;
$fullname = "/usr/local/src/perl-5.6.1.tar.gz";
$file = basename($fullname);
# file="perl-5.6.1.tar.gz"
$dir = dirname($fullname);
# dir="/usr/local/src"($file,$dir,$ext) = fileparse($fullname, qr/\..*/);
# dir="/usr/local/src/" file="perl-5" ext=".6.1.tar.gz"
($file,$dir,$ext) = fileparse($fullname, qr/\.[^.]*/);
# dir="/usr/local/src/" file="perl-5.6.1.tar" ext=".gz"
($file,$dir,$ext) = fileparse($fullname, qr/\.\D.*/);
# dir="/usr/local/src/" file="perl-5.6.1" ext=".tar.gz"
($file,$dir,$bak) = fileparse("/tmp/file.bak",
qr/~+$/, qr/\.(bak|orig|save)/)
# dir="/tmp/" file="file" ext=".bak"
($file,$dir,$bak) = fileparse("/tmp/file~",
qr/~+$/, qr/\.(bak|orig|save)/)
# dir="/tmp/" file="file" ext="~"The File::Basename module provides functions
to parse pathnames into their individual components. The
dirname function pulls out the directory portion
and basename the nondirectory portion. The more
elaborate fileparse function picks out the full
pathname into the directory name, the filename, and the suffix; you
must supply a list of regular expressions describing the suffixes that
interest you. The examples above illustrate how choice of suffix
patterns affects the result. By default, these functions parse
pathnames according to the native conventions of your current
platform. The fileparse_set_fstype function selects
a different platform's parsing rules, such as
fileparse_set_fstype("VMS") to parse names using VMS rules, even when running on non-VMS ...