在OS X 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::fileparse
perl -v给出:
这是perl 5,版本12,颠覆4(v5.12.4) 达尔文线程多2level
@INC包括/System/Library/Perl/5.12/和 /System/Library/Perl/5.12/File/BaseName.pm存在且具有fileparse in 它
如果有帮助,当我使用File::Spec
并参考File::Spec->splitpath
时,这样可以正常工作(但我必须填写整行)。
答案 0 :(得分:8)
区分大小写:
Basename
以小写字母“N”编写。 Acme::require::case可以防止出现此问题。
此外,导入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'\.[^\.]*'); # !!!