在我的perl脚本中,我有param $FILE=/etc/sysconfig/network
以哪种方式(在perl中)我只能剪切目录并将目录放在$ DIR param中
为了获得:
$DIR=/etc/sysconfig
(like dirname /etc/sysconfig/network in shell script)
答案 0 :(得分:35)
小心! dirname()
故意愚蠢地模仿dirname
shell命令。它并不是“给我这个文件路径的目录部分”作为“除了这条路径的最后一部分之外给我所有”。为什么这很重要?
my $dir = "/foo/bar/"; # obviously a directory
print dirname($dir); # prints /foo
这很好,只要你意识到dirname
没有返回dirname。
如果您希望上述内容返回/foo/bar/
,最好使用File :: Spec。
use File::Spec;
my($vol,$dir,$file) = File::Spec->splitpath($path);
答案 1 :(得分:26)
use File::Basename;
($name,$path,$suffix) = fileparse($fullname,@suffixlist);
$name = fileparse($fullname,@suffixlist);
$basename = basename($fullname,@suffixlist);
$dirname = dirname($fullname);
详细了解perldoc中的File::Basename。
答案 2 :(得分:5)
使用File::Basename核心模块:
use strict;
use warnings;
use File::Basename;
my $FILE = '/etc/sysconfig/network';
my $DIR = dirname($FILE);
print $DIR, "\n";
打印出来:
的/ etc / SYSCONFIG