File::Basename 模块

作者: JSON_NULL | 来源:发表于2017-08-18 16:39 被阅读24次

这个模块的功能是将 文件路径解析为 目录、文件名和文件扩展名。

这个模块下有四个函数可供调用:fileparse、basename、dirname、fileparse_set_fstype。

fileparse

语法

my($filename, $dirs, $suffix) = fileparse($path);
my($filename, $dirs, $suffix) = fileparse($path, @suffixes);
my $filename                  = fileparse($path, @suffixes);

功能

fileparse 函数对文件路径($path)进行解析得到文件所在目录($dirs)、文件名($filename)和文件扩展名($suffix)。

如果给了参数@suffixes,则@suffixes中的元素(是一个字符串或一个qr//形式的正则表达式)用于匹配得到文件的扩展名。

fileparse 在列表上下文返回的是一个列表:($filename, $dirs, $suffix) ;在标题上下文件返回的是$filename。

例子

# On Unix returns ("baz", "/foo/bar/", "")
fileparse("/foo/bar/baz");

# On Windows returns ("baz", 'C:\foo\bar\', "")
fileparse('C:\foo\bar\baz');

# On Unix returns ("", "/foo/bar/baz/", "")
fileparse("/foo/bar/baz/");

basename

语法

my $filename = basename($path);
my $filename = basename($path, @suffixes);

功能

这个函数提供的功能与Unix shell命令中的 basename(1)相兼容。它并不总是返回文件名。如果你想要总是得到文件名请在标量上下文中使用fileparse()函数。

basename()返回文件路径的最后一个层级,可能是文件名,也可能是目录名。这与fileparse的行为是不同的。

# Both return "bar"
basename("/foo/bar");
basename("/foo/bar/");

在basename方法中@suffixes参数中的元素是不能使用正则的,所有元素必须为字符串。

# These two function calls are equivalent.
my $filename = basename("/foo/bar/baz.txt",  ".txt");
my $filename = fileparse("/foo/bar/baz.txt", qr/\Q.txt\E/);

还要注意,为了与shell命令兼容,basename()如果文件名中有扩展名,则扩展名会作为文件名的一部分。

dirname

my $dirs = dirname($path);

这个函数提供的功能与Unix shell命令中的 dirname(1)相兼容。它并不总是返回目录名。如果你想要总是得到目录名请在列表上下文中使用fileparse()函数。

  1. 当在VMS和AmigaOS下时,dirname只返回目录名,这个结果与fileparse返回的$dir相同。
  2. 当在Unix和MSDOS下时,它会模拟dirname(1) shell 函数,这时他fileparse的结果不同。返回的是$path中除去最后一个层级余下的部分。

还有一点与fileparse的不同是,dirname返回的目录名不包括结尾的斜线。

# returns /foo/bar.  fileparse() would return /foo/bar/
dirname("/foo/bar/baz");

# also returns /foo/bar despite the fact that baz is clearly a 
# directory.  fileparse() would return /foo/bar/baz/
dirname("/foo/bar/baz/");

# returns '.'.  fileparse() would return 'foo/'
dirname("foo/");

fileparse_set_fstype

my $type = fileparse_set_fstype();
my $previous_type = fileparse_set_fstype($type);

通常File :: Basename将假定您当前操作系统为本机的文件路径类型(例如,Unix上的/ foo / bar样式,Windows上的\ foo \ bar等)。使用此函数,您可以覆盖该假设。

有效的类型有:“MacOS”,“VMS”,“AmigaOS”,“OS2”,“RISCOS”,“MSWin32”,“DOS”(还有用于向后兼容的“MSDOS”),“Epoc”和“Unix”(不区分大小写)。如果给出一个无法识别的类型,将假定其为“Unix”。

如果您选择了VMS语法,并且传递给其中一个包含一个“/”的$path,那么File::Basename模块将假设您正在使用Unix仿真,这时它会应用Unix语法规则对此次函数调用进行处理,并且这种处理仅限于该当次函数调用。

相关文章

  • File::Basename 模块

    这个模块的功能是将 文件路径解析为 目录、文件名和文件扩展名。 这个模块下有四个函数可供调用:fileparse、...

  • 无标题文章

    File Upload basename() 函数返回路径中的文件名部分。 语法 basename(path,su...

  • nodejs basename特殊字符处理

    nodejs中path模块,提供了basename用于通过文件地址获取文件名。 path.basename('/D...

  • ruby File.basename函数

    File.basename函数 返回filename中的最后一条斜线后面的部分。若给出了参数suffix且它和fi...

  • dirname(__FILE__)函数的用法

    FILE表示当前所在文件的绝对路径包括文件名,dirname(FILE)表示当前文件的绝对路径,basename(...

  • path模块

    path模块 path.basename(path[, ext]) path路径 ext可选的文件扩展名 path...

  • mingling

    basename 基名-取文件名-去后缀名 --- 最后指定需要去除的完整后缀名 file:文件可以包...

  • node之path模块

    path模块提供了一些工具函数,用于处理文件与目录的路径 path.basename(path[,ext]) pa...

  • path.join(__dirname,'./public')

    path路径操作模块 basename获取一个路径的文件名(包含默认的扩展名) dirname extname p...

  • 20171014

    1.FILE 取得当前文件的绝对地址 2.basename(path,suffix) 返回路径中的文件名部分 3....

网友评论

    本文标题:File::Basename 模块

    本文链接:https://www.haomeiwen.com/subject/ekyarxtx.html