如何使用Perl获取文件的dirname?

lid*_*dia 17 perl

在我的perl脚本中,我有了param $FILE=/etc/sysconfig/network

以哪种方式(在perl中)我只能剪切目录并将目录放在$ DIR param中

为了得到:

$DIR=/etc/sysconfig

(like dirname /etc/sysconfig/network in shell script)
Run Code Online (Sandbox Code Playgroud)

Sch*_*ern 37

小心! dirname()故意愚蠢地模仿dirnameshell命令.它并不是"给我这个文件路径的目录部分"作为"除了这条路径的最后一部分之外给我所有".为什么这很重要?

my $dir = "/foo/bar/";   # obviously a directory
print dirname($dir);     # prints /foo
Run Code Online (Sandbox Code Playgroud)

这很好,只要你意识到dirname不返回dirname.

如果你想让上面的内容返回,/foo/bar/你最好使用File :: Spec.

use File::Spec;
my($vol,$dir,$file) = File::Spec->splitpath($path);
Run Code Online (Sandbox Code Playgroud)


Mic*_*sov 28

use File::Basename;

($name,$path,$suffix) = fileparse($fullname,@suffixlist);

$name = fileparse($fullname,@suffixlist);
$basename = basename($fullname,@suffixlist);
$dirname  = dirname($fullname);
Run Code Online (Sandbox Code Playgroud)

在perldoc中阅读有关File :: Basename的更多信息.


too*_*lic 7

使用File :: Basename核心模块:

use strict;
use warnings;
use File::Basename;

my $FILE = '/etc/sysconfig/network';
my $DIR = dirname($FILE);
print $DIR, "\n";
Run Code Online (Sandbox Code Playgroud)

打印输出:

/ etc / sysconfig