在我的Perl腳本,我有帕拉姆$FILE=/etc/sysconfig/network
如何使用Perl獲取文件的dirname?
以何種方式(在Perl),我可以只砍目錄,把目錄$ DIR PARAM
爲了得到:
$DIR=/etc/sysconfig
(like dirname /etc/sysconfig/network in shell script)
在我的Perl腳本,我有帕拉姆$FILE=/etc/sysconfig/network
如何使用Perl獲取文件的dirname?
以何種方式(在Perl),我可以只砍目錄,把目錄$ DIR PARAM
爲了得到:
$DIR=/etc/sysconfig
(like dirname /etc/sysconfig/network in shell script)
use File::Basename;
($name,$path,$suffix) = fileparse($fullname,@suffixlist);
$name = fileparse($fullname,@suffixlist);
$basename = basename($fullname,@suffixlist);
$dirname = dirname($fullname);
在perldoc中瞭解更多關於File::Basename的信息。
使用File::Basename核心模塊:
use strict;
use warnings;
use File::Basename;
my $FILE = '/etc/sysconfig/network';
my $DIR = dirname($FILE);
print $DIR, "\n";
此打印出:
的/ etc/SYSCONFIG
當心! 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);
dirname()是陷阱,splitpath()是最好的答案;投票作爲解決方案的答案。 – AjayKumarBasuthkar 2015-11-05 05:55:29