2012-03-29 11 views
2

$FindBin::RealBinを使用してperlスクリプトの場所を取得しています。今私はこれを使用して問題があります。 私は1つのPerlスクリプトからPerlスクリプトを呼び出しています。 呼び出し元スクリプトで$FindBin::RealBinは正常に動作していますが、呼び出されたPerlスクリプトではその場所を指定していません。 何も分からないのですか?Perlの現在の作業ディレクトリパスを取得する

+1

これはhttp://perl.active-venture.com/lib/Cwd.htmlで動作しますか? – huon

+0

'$ FindBin'は、Perlスクリプトが置かれているディレクトリを見つけるために使われます。それはPerlプロセスの現在の作業ディレクトリとは異なります。あなたは本当にお探しですか? –

+0

私はperlスクリプトの場所だけを取得したいと思います。どうすれば呼び出されたperlスクリプトで取得できますか?$ FindBin :: RealBinを使用すると空です。他の方法でそれを取得するには? – siri

答えて

2

フルコードサンプルを提供していないので、これはもっと推測です。
documentationによると、あなたはこれがFindBinの既知の制限があるよう

FindBin::again(); 

を呼び出す必要があります。

0

ご質問がありましたらrealpathからCwdまでご連絡ください。

$ 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' 
5

これは、私がいつも使用しているものである:それはあなたのケースで動作するかどう

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

を確認してください。内部スクリプトをシェル呼び出しとして呼び出す場合にはうまくいくはずです。あなたがdoと呼んでもうまくいくかどうかわかりません。これについて

いくつかの測定値:

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

FindBinを参照してください::ビンはhttp://use.perl.org/~Aristotle/journal/33995(またはGoogleのキャッシュhttp://webcache.googleusercontent.com/search?q=cache:y-5OZsxdTT8J:use.perl.org/~Aristotle/journal/33995)が壊れている

ファイル::ベース名http://perldoc.perl.org/File/Basename.htmlはより問題

希望ですそれは役に立ちます

関連する問題