2012-03-29 6 views
2

$FindBin::RealBin을 사용하여 perl 스크립트 위치를 얻고 있습니다. 이제는 이것을 사용하는 데 문제가 있습니다. 하나의 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

질문이 있으시면 realpathCwd에서 사용할 수 있습니다.

$ 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 깨진 (또는 구글 캐시 http://webcache.googleusercontent.com/search?q=cache:y-5OZsxdTT8J:use.perl.org/~Aristotle/journal/33995)

파일 :: 기본 이름 http://perldoc.perl.org/File/Basename.html 더 문제가

희망 참조 도움이됩니다.