Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Perl中打印相对路径的文件夹?_Perl_Directory - Fatal编程技术网

如何在Perl中打印相对路径的文件夹?

如何在Perl中打印相对路径的文件夹?,perl,directory,Perl,Directory,我有一个脚本,它采用到文件夹的相对路径。有没有办法获取指向的文件夹/目录的名称?如果需要,它可以是绝对路径,我将使用正则表达式来剥离它 假设我正在执行: /example/a/b/c/d/perl.pl e、 g.1 如果他们输入: ../../ ./ 我希望它能够返回'b'或到b的绝对路径,我可以编写一个脚本来剥离它 e、 g.2 如果他们输入: ../../ ./ 我希望它能够返回'd'或者再次返回,到d的绝对路径 有没有一种简单的方法可以做到这一点,因为我能想到的唯一方法是计算.

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

假设我正在执行:

/example/a/b/c/d/perl.pl
e、 g.1

如果他们输入:

../../
./
我希望它能够返回'b'或到b的绝对路径,我可以编写一个脚本来剥离它

e、 g.2

如果他们输入:

../../
./
我希望它能够返回'd'或者再次返回,到d的绝对路径

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

谢谢

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

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


相对于您请求执行的脚本:

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);

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

相对于您请求执行的脚本:

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提供的函数不会解析符号链接(如果您喜欢的话)。

Cwd中没有“real\u path”函数,有“realpath”,它是“abs\u path”的同义词:Oops,修复了。我知道它在某些平台上是同义词。但我特别想要realpath的功能。Cwd中没有“real_path”函数,有“realpath”,它是“abs_path”的同义词:Oops,修复了。我知道它在某些平台上是同义词。但我特别想要realpath的功能。