1

我有一个脚本,它采用文件夹的相对路径。有没有办法获取指向的文件夹/目录的名称?如果需要,它可能是绝对路径,我将使用正则表达式来剥离它。

假设我正在执行:

/example/a/b/c/d/perl.pl

例如 1

如果他们输入:

../../

我希望它能够返回“b”(或到 b 的绝对路径,我可以编写一个脚本来剥离它)。

例2

如果他们输入:

./

我希望它能够返回“d”(或者再次返回到 d 的绝对路径)。

有没有一种简单的方法可以做到这一点,因为我能想到的唯一方法是计算数量../并使用它在文件的绝对路径上执行正则表达式,这需要大量处理。

谢谢

4

2 回答 2

5

这很简单 - 只需使用Cwd模块:

use Cwd 'abs_path';
my $abs_path = abs_path($file); 
于 2012-10-27T14:36:54.370 回答
2

相对于正在执行的脚本(根据您的要求):

use Cwd            qw( realpath );
use File::Basename qw( dirname );

my $script_dir = dirname(realpath($0));
my $abs_path = real_path("$script_dir/$rel_path");

相对于当前工作目录:

use Cwd qw( realpath );

my $abs_path = realpath($rel_path);

在这两种情况下,符号链接都会被解析。File::Spec 提供不解析符号链接的函数,如果这是您喜欢的。

于 2012-10-27T17:44:05.617 回答