【发布时间】:2014-03-10 23:26:06
【问题描述】:
我有两个价值观:
- 当前目录名
- 绝对或相对文件名
我需要构造一个明确的绝对文件名(以 / 开头,不带任何 ../ 且不带 ./),它对应于在目录为当前目录时访问此文件。
我需要在 Unix 中的 Perl 中执行此操作。
我已经尝试过use File::Path;,但这不起作用(错误?):
perl -MPath::Class -e 'my $fileObj = Path::Class::File->new("/boot", "/xx");
print $fileObj->absolute, "\n";'
输出:
/boot/xx
但它应该打印/xx,因为它是一个绝对路径,它不应该依赖于当前目录!
【问题讨论】:
-
您的代码使用
Path::Class和Path::Class::File,但您说您使用的是File::Path……这有点令人困惑。不过,Path::Class 确实将自己记录为File::Path之上的一个层。我认为您的问题是 GIGO:Garbage In,Garbage Out。文件名不应包含斜杠;当它发生时,你得到你所得到的。文件名是通过将目录名列表(在您的示例中为一个)添加到文件名来创建的。
标签: perl path directory filepath