在OS 10.8.4上,在一个测试perl程序中:
#!/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'\.[^\.]*');知道为什么我会收到错误信息吗:
Can't locate object method "fileparse" via package "File::BaseName"
(perhaps you forgot to load "File::BaseName"?)既然如此,我为什么要把File::BaseName放在这里呢?如果我不知道,上面写着
Undefined subroutine &main::fileparseperl -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时,它可以很好地工作(但是我必须将整行放进去)。
发布于 2013-07-21 08:42:21
它区分大小写:Basename是用小写字母"N“写的。要求::案例将防止这个问题的发生。
此外,在导入fileparse模块之后,不必为File::Basename使用限定名:
#!/usr/bin/perl
use warnings;
use strict;
use File::Basename; # !!!
my $fname = "/usr/local/junk.txt";
my ($name, $path, $suffix1) = fileparse($fname, qr'\.[^\.]*'); # !!!https://stackoverflow.com/questions/17770479
复制相似问题