我有这个代码使用Perl打印当前目录:
use Cwd qw(abs_path);
my $path = abs_path($0);
print "$path\n";
Run Code Online (Sandbox Code Playgroud)
但它显示我的脚本的文件名以及目录.
像这样:
C:\ Perl的\ duration.pl
我希望它只显示C:\Perl\.
我该怎么做?
jus*_*tkt 42
要获取当前工作目录(pwd在许多系统上),您可以使用cwd()而不是abs_path:
use Cwd qw();
my $path = Cwd::cwd();
print "$path\n";
Run Code Online (Sandbox Code Playgroud)
或者abs_path没有争论:
use Cwd qw();
my $path = Cwd::abs_path();
print "$path\n";
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请参阅Cwd文档.
要从目录外部获取perl文件所在的目录:
use File::Basename qw();
my ($name, $path, $suffix) = File::Basename::fileparse($0);
print "$path\n";
Run Code Online (Sandbox Code Playgroud)
有关更多详细信息,请参阅File :: Basename文档.
ike*_*ami 17
以下每个片段都会获取脚本的目录,该目录与当前目录不同.目前尚不清楚你想要哪一个.
use FindBin qw( $RealBin );
say $RealBin;
Run Code Online (Sandbox Code Playgroud)
要么
use Cwd qw( abs_path );
use File::Basename qw( dirname );
say dirname(abs_path($0));
Run Code Online (Sandbox Code Playgroud)
要么
use Cwd qw( abs_path );
use Path::Class qw( file );
say file(abs_path($0))->dir;
Run Code Online (Sandbox Code Playgroud)
小智 5
只需删除'$ 0'
use Cwd qw(abs_path);
my $path = abs_path();
print "$path\n";
Run Code Online (Sandbox Code Playgroud)