【问题标题】:Get the current working directory path in Perl在 Perl 中获取当前工作目录路径
【发布时间】:2012-04-12 17:51:07
【问题描述】:

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

【问题讨论】:

标签: perl


【解决方案1】:

这是我经常使用的:

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 问题较多

希望对你有帮助

【讨论】:

    【解决方案2】:

    由于您没有提供完整的代码示例,这更多是猜测。
    根据documentation,需要调用

    FindBin::again();
    

    因为这是 FindBin 的一个已知限制。

    【讨论】:

      【解决方案3】:

      如果我理解您的问题,您可以使用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'
      

      【讨论】:

        猜你喜欢
        • 2014-03-10
        • 1970-01-01
        • 2019-01-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-28
        • 2014-04-22
        • 2019-02-18
        相关资源
        最近更新 更多