出于某种原因,我的代码正在做这样一件事:fileparse只打印(字面上) File::Basename
use strict;
use warnings 'all';
use File::Basename;
...
my $fileName = File::Basename->fileparse($filePath);
print("$filePath\n");
print("$fileName\n");产出如下:
a/b/c/d.bin
File::Basename我做错什么了?
发布于 2013-07-24 23:10:31
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 namehttps://stackoverflow.com/questions/17846315
复制相似问题