为什么Perl找不到File :: BaseName-> fileparse?

时间:2013-07-21 08:34:02

标签: macos perl

在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时,这样可以正常工作(但我必须填写整行)。

1 个答案:

答案 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'\.[^\.]*'); # !!!