首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么Perl找不到File::BaseName->File解析?

为什么Perl找不到File::BaseName->File解析?
EN

Stack Overflow用户
提问于 2013-07-21 08:34:02
回答 1查看 2.7K关注 0票数 4

在OS 10.8.4上,在一个测试perl程序中:

代码语言:javascript
复制
#!/usr/bin/perl

use warnings;
use strict;
use File::BaseName;

my $fname = "/usr/local/junk.txt";
my ($name, $path, $suffix1) = File::BaseName->fileparse($fname, qr'\.[^\.]*');

知道为什么我会收到错误信息吗:

代码语言:javascript
复制
Can't locate object method "fileparse" via package "File::BaseName"
(perhaps you forgot to load "File::BaseName"?)

既然如此,我为什么要把File::BaseName放在这里呢?如果我不知道,上面写着

代码语言:javascript
复制
Undefined subroutine &main::fileparse

perl -v提供:

这是perl 5,版本12,subversion 4 (v5.12.4),它是为达尔文线程-多线程级别构建的。 @INC包括/System/Library/Perl/5.12/和/System/Library/Perl/5.12/File/BaseName.pm存在并在其中包含文件解析。

如果这有帮助,当我使用File::Spec并引用File::Spec->splitpath时,它可以很好地工作(但是我必须将整行放进去)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-21 08:42:21

它区分大小写:Basename是用小写字母"N“写的。要求::案例将防止这个问题的发生。

此外,在导入fileparse模块之后,不必为File::Basename使用限定名:

代码语言:javascript
复制
#!/usr/bin/perl

use warnings;
use strict;
use File::Basename; # !!!

my $fname = "/usr/local/junk.txt";
my ($name, $path, $suffix1) = fileparse($fname, qr'\.[^\.]*'); # !!!
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17770479

复制
相关文章

相似问题

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