From: Gabor Szabo Date: Sat, 5 Aug 2006 23:00:14 +0000 (+0300) Subject: File::Basename add X<> tags, replace regex delimiters X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=6f422a3fee985a1fe85f8f8415d89dcebbee6a53;p=p5sagit%2Fp5-mst-13.2.git File::Basename add X<> tags, replace regex delimiters From: "Gabor Szabo" Message-ID: p4raw-id: //depot/perl@28665 --- diff --git a/lib/File/Basename.pm b/lib/File/Basename.pm index 837b753..7df8c89 100644 --- a/lib/File/Basename.pm +++ b/lib/File/Basename.pm @@ -54,7 +54,7 @@ our(@ISA, @EXPORT, $VERSION, $Fileparse_fstype, $Fileparse_igncase); require Exporter; @ISA = qw(Exporter); @EXPORT = qw(fileparse fileparse_set_fstype basename dirname); -$VERSION = "2.74"; +$VERSION = "2.75"; fileparse_set_fstype($^O); @@ -62,6 +62,7 @@ fileparse_set_fstype($^O); =over 4 =item C +X my($filename, $directories, $suffix) = fileparse($path); my($filename, $directories, $suffix) = fileparse($path, @suffixes); @@ -143,13 +144,13 @@ sub fileparse { $dirpath ||= ''; # should always be defined } else { # Default to Unix semantics. - ($dirpath,$basename) = ($fullname =~ m#^(.*/)?(.*)#s); - if ($orig_type eq 'VMS' and $fullname =~ m:^(/[^/]+/000000(/|$))(.*):) { + ($dirpath,$basename) = ($fullname =~ m{^(.*/)?(.*)}s); + if ($orig_type eq 'VMS' and $fullname =~ m{^(/[^/]+/000000(/|$))(.*)}) { # dev:[000000] is top of VMS tree, similar to Unix '/' # so strip it off and treat the rest as "normal" my $devspec = $1; my $remainder = $3; - ($dirpath,$basename) = ($remainder =~ m#^(.*/)?(.*)#s); + ($dirpath,$basename) = ($remainder =~ m{^(.*/)?(.*)}s); $dirpath ||= ''; # should always be defined $dirpath = $devspec.$dirpath; } @@ -178,11 +179,12 @@ sub fileparse { =item C +X X my $filename = basename($path); my $filename = basename($path, @suffixes); -This function is provided for compatibility with the Unix shell command +This function is provided for compatibility with the Unix shell command C. It does B always return the file name portion of a path as you might expect. To be safe, if you want the file name portion of a path use C. @@ -237,6 +239,7 @@ sub basename { =item C +X This function is provided for compatibility with the Unix shell command C and has inherited some of its quirks. In spite of @@ -310,7 +313,7 @@ sub dirname { elsif ($type eq 'AmigaOS') { if ( $dirname =~ /:\z/) { return $dirname } chop $dirname; - $dirname =~ s#[^:/]+\z## unless length($basename); + $dirname =~ s{[^:/]+\z}{} unless length($basename); } else { _strip_trailing_sep($dirname); @@ -341,6 +344,7 @@ sub _strip_trailing_sep { =item C +X my $type = fileparse_set_fstype(); my $previous_type = fileparse_set_fstype($type);