获取Perl中的当前工作目录路径

时间:2012-03-29 05:04:12

标签: perl

我使用$FindBin::RealBin获取perl脚本位置。现在我有一个使用它的问题。 我从一个Perl脚本调用Perl脚本。 在调用者脚本中,$FindBin::RealBin工作正常,但在调用的Perl脚本中,它没有给出位置。 我错过了什么吗?

3 个答案:

答案 0 :(得分:5)

这就是我经常使用的:

my ($vol,$script_path, $prog) = File::Spec->splitpath(File::Spec->rel2abs( __FILE__ ));

检查它是否适用于您的情况。如果将内部脚本称为shell调用,它应该可以工作。如果你用do调用它,我不知道它是否有用。

关于此的一些解读:

请参阅How do I get the full path to a Perl script that is executing?

FindBin :: Bin已损坏http://use.perl.org/~Aristotle/journal/33995(或google缓存http://webcache.googleusercontent.com/search?q=cache:y-5OZsxdTT8J:use.perl.org/~Aristotle/journal/33995

File :: Basename http://perldoc.perl.org/File/Basename.html更有问题

希望有所帮助

答案 1 :(得分:2)

由于您未提供完整的代码示例,因此更多猜测。
根据{{​​3}},您需要致电

FindBin::again();

因为这是FindBin的已知限制。

答案 2 :(得分:0)

如果我理解了您的问题,您可以使用Cwd中的realpath

$ cat ./mycode
#!/usr/bin/env perl
use strict;
use warnings;
use Cwd;
print "called as '$0'\n";
print "lives  in '", Cwd::realpath($0), "'\n";

$ ./mycode
called as './mycode'
lives  in '/Users/jrf/Sandbox/mycode'