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 systems.