如何检查路径/目录是否存在(-d)并且是根目录的完整路径名?
i.e. ~/mysubdir vs /home/me/mysubdir vs mysubdir.
答案 0 :(得分:1)
use strict;
use warnings;
use feature 'say';
use Cwd qw/abs_path getcwd/;
use File::HomeDir;
my $path = 'foo/../bar';
if($path =~ /^~/) {
my $home = File::HomeDir->my_home;
$path =~ s/^~/$home/;
}
if($path !~ m!^/!) {
$path = getcwd . "/$path";
}
my $full_path = abs_path($path);
if(defined $full_path && -d $full_path) {
say "$full_path exists";
} else {
say "$path is non-existant";
}
File::Homedir
将允许您获取用户主目录,并且您
然后可以替换路径中的波浪号。
如果此时的路径不以/
(是相对路径)开头,则使用getcwd
添加当前工作目录,以获得绝对路径。
完成后,您可以将其传递给abs_path
以解决.
和..
以及符号链接等问题。
最后,您可以使用-d
对其进行测试,以查看结果路径是否存在。