File::Basename->fileparse 返回"File::Basename"



由于某种原因,我的代码正在做这件事,其中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

相关内容

  • 没有找到相关文章

最新更新