Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
perl-File::Basename->;fileparse返回“;文件::Basename";_Perl_Fileparse - Fatal编程技术网

perl-File::Basename->;fileparse返回“;文件::Basename";

perl-File::Basename->;fileparse返回“;文件::Basename";,perl,fileparse,Perl,Fileparse,出于某种原因,我的代码正在做这个wierd的事情,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::Base

出于某种原因,我的代码正在做这个wierd的事情,
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

我做错了什么?

文件解析不是一种方法;这是一个函数。默认情况下会导出此函数,因此您实际上需要执行以下操作

use File::Basename;
my $fileName = fileparse($filePath);
您已将is用作方法调用。这里的
File::Basename->fileparse($filePath)
相当于

fileparse("File::Basename", $filePath)
因为在方法调用中,invocant(通常是一个对象;这里是包名)成为第一个参数。这是错误的,因为它将
“File::Basename”
视为解析路径,并将以下参数视为有效后缀的列表

如果要使用
fileparse
函数而不将其导出到命名空间,可以

use File::Basename (); # note empty parens that supress the import
File::Basename::fileparse(...); # use fully qualified name