首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >perl - File::Basename->fileparse返回"File::Basename“

perl - File::Basename->fileparse返回"File::Basename“
EN

Stack Overflow用户
提问于 2013-07-24 23:06:27
回答 1查看 2.7K关注 0票数 2

出于某种原因,我的代码正在做这样一件事:fileparse只打印(字面上) File::Basename

代码语言:javascript
复制
 use strict;
 use warnings 'all';
 use File::Basename;

 ...

 my $fileName = File::Basename->fileparse($filePath);
 print("$filePath\n");
 print("$fileName\n");

产出如下:

代码语言:javascript
复制
a/b/c/d.bin
File::Basename

我做错什么了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-24 23:10:31

fileparse不是一个方法;它是一个函数。默认情况下,此函数将导出,因此您实际上想要这样做。

代码语言:javascript
复制
use File::Basename;
my $fileName = fileparse($filePath);

您已经使用了is作为方法调用。在这里,File::Basename->fileparse($filePath)相当于

代码语言:javascript
复制
fileparse("File::Basename", $filePath)

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

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

代码语言:javascript
复制
use File::Basename (); # note empty parens that supress the import
File::Basename::fileparse(...); # use fully qualified name
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17846315

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档