使用Perl打印当前目录

mac*_*mac 20 directory perl

我有这个代码使用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)

  • 只需注意:[say](http://perldoc.perl.org/functions/say.html)必须启用为根据文档使用的功能. (3认同)

小智 5

只需删除'$ 0'

use Cwd qw(abs_path);
my $path = abs_path();
print "$path\n";
Run Code Online (Sandbox Code Playgroud)


小智 5

使用:

print($ENV{'PWD'});
Run Code Online (Sandbox Code Playgroud)

但我认为它不适用于Windows ...