在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'\.[^\.]*');
Run Code Online (Sandbox Code Playgroud)
我收到错误消息的任何想法:
Can't locate object method "fileparse" via package "File::BaseName"
(perhaps you forgot to load "File::BaseName"?)
Run Code Online (Sandbox Code Playgroud)
就此而言,我为什么要放File::BaseName?如果我不这样做,它说
Undefined subroutine &main::fileparse
Run Code Online (Sandbox Code Playgroud)
perl -v给出:
这是为darwin-thread-multi-2level构建的perl 5,版本12,subversion 4(v5.12.4)
和@INC包括/System/Library/Perl/5.12/和/System/Library/Perl/5.12/File/BaseName.pm存在,并fileparse在里面.
万一它有用,当我使用File::Spec和参考File::Spec->splitpath,这工作正常(但我必须把整行).
区分大小写:
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'\.[^\.]*'); # !!!
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1990 次 |
| 最近记录: |