我需要将当前目录的尾随部分放入变量中。我可以做一个
use Cwd;
my $dir = getcwd;
获取完整路径:usr\bjm\scPDB_entries\4dpt
但我真正需要的是将4dpt
'从路径的其余部分拆分出来。
谢谢!
答案 0 :(得分:5)
use File::Basename qw(basename);
print basename($dir), "\n";
答案 1 :(得分:4)
最好使用File::Spec
,特别是如果代码需要跨平台工作。 File::Basename
的文档说明了这一点。
如果你只关心解析路径,那么使用File :: Spec的splitpath()和splitdir()方法会更安全。
此程序按您的要求执行
use strict;
use warnings;
use File::Spec;
my $cwd = File::Spec->rel2abs;
my @path = File::Spec->splitdir($cwd);
my $dir = $path[-1];
print $dir;
它啰嗦主要是因为File::Spec
的面向对象性质。辅助模块File::Spec::Functions
允许您通过将类方法作为本地子例程导入来使其更简洁。
use strict;
use warnings;
use File::Spec::Functions qw/ rel2abs splitdir /;
my $dir = (splitdir(rel2abs))[-1];
print $dir;