我动态获取目录的路径,并将其存储在变量中。我需要降低 1 级并获取父目录。此外,该路径是 Windows 路径。基本上,我在 Windows 上运行 perl。如何在 perl 中实现这一点?一切都很好 - 正则表达式或任何其他方式。请帮忙!
例如 :
原始目录路径:
my $dir = "C:/mytest/mydata/mywork/mydir";
输出需要的是:
my $dir = "C:/mytest/mydata/mywork";
我需要直到父目录“mywork”,而不是“mydir”。
任何人都可以帮助编写相同的代码吗?
第二个查询:
我在目录路径中有空间:
例子 :
my $testdir = "C:/mytest own/mydata/mywork/mydir";
请注意,“mytest own”是一个目录,但有空间。现在,当我尝试输入以使用此变量进入此目录时,我无法这样做。
对于查询 1,我尝试了以下代码:
@英戈:
#!/usr/bin/perl
my $dir = "C:/mytest/mydata/mywork/mydir";
print "Input directory is : $dir\n";
my $outdir = $dir . "/..";
print "Output directory is : $outdir";
注意:我需要在不使用任何 perl 模块的情况下完成此操作。
@TLP:我尝试使用您的缩短方法,再次复制代码,但没有提供所需的输出。
#!/usr/bin/perl
use strict;
use warnings;
use File::Spec;
my $str = "C:/mytest/mydata/mywork/mydir";
my @dirs = File::Spec->splitdir($str); # parse directories
my $newdir = File::Spec->catdir(@dirs, File::Spec->updir()); # create new path
print $newdir;
输出看起来像:输出附加 /..
C:/mytest/mydata/mywork/mydir/..