由于某种原因,我的代码正在做这件事,其中fileparse
只打印(字面上)File::Basename
use strict;
use warnings 'all';
use File::Basename;
...
my $fileName = File::Basename->fileparse($filePath);
print("$filePathn");
print("$fileNamen");
输出为:
a/b/c/d.bin
File::Basename
我做错了什么?
fileparse
不是一个方法;它是一个函数。这个功能是默认导出的,所以你实际上想做
use File::Basename;
my $fileName = fileparse($filePath);
您已将is用作方法调用。这里File::Basename->fileparse($filePath)
相当于
fileparse("File::Basename", $filePath)
因为在方法调用中,调用程序(通常是一个对象;这里是包名称)将成为第一个参数。这是错误的,因为它将"File::Basename"
视为要解析的路径,并将以下参数视为有效后缀的列表。
如果你想使用fileparse
函数而不将其导出到你的命名空间,你可以
use File::Basename (); # note empty parens that supress the import
File::Basename::fileparse(...); # use fully qualified name