-2
如何检查路径/目录是否存在(-d)并且是根目录中的完整路径名?检查一个目录是否存在绝对路径
i.e. ~/mysubdir vs /home/me/mysubdir vs mysubdir.
- 我想提供给死,如果它不是一个根路径 存在的论点。 os特定于unix。
- 或者,给定一个目录,如果存在它的完整根路径?
如何检查路径/目录是否存在(-d)并且是根目录中的完整路径名?检查一个目录是否存在绝对路径
i.e. ~/mysubdir vs /home/me/mysubdir vs mysubdir.
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
来测试结果路径是否存在。
只是一些可能使搜索更容易的术语:你称之为“根路径”的东西通常称为绝对路径,而“非根路径”称为相对路径。 – ThisSuitIsBlackNot
绝对路径是在代字符扩展之后以斜线开始的路径。您可以通过查找代字符或斜线来快捷,并在代码中稍后单独处理无效的代字符扩展。 – tripleee
@tripleee关于代字号的小心,并非所有程序都将其解释为$ HOME。尝试'perl -MFile :: Find -e'find(sub {print“$ File :: Find :: name \ n”;},“〜”);'---它不打印任何东西,但显然我确实有文件在'〜'中。 – Robert