좋아요. 더 자세히 설명하기 위해이 내용을 다시 작성하고 있습니다. 나는 Perl에 상당히 새로운 프로그래밍이므로 & 프로그래밍과 함께하시기 바랍니다. 본질적으로, 나는 그들이 동일한 디렉토리 내에서 왔을 때 메인 .pl 파일 내부에서 하나 이상의 파일 (모듈을 추측하고 있나?)을 어떻게 실행하는지 알고 싶다. 내 코드는 내 파일의 맨 아래에 서브 루틴으로 연결되어 있지만 서브 루틴을 꺼내 모듈로 변환하면 제대로 작동하지 않습니다.서브 루틴이 내 주요 함수와 같은 디렉토리에 있다면 어떻게 호출해야합니까?
답변
다음 두 단계를 시작하면 도움이됩니다. 일부 서브 시스템을 패키지 MyModule
으로 내 보냅니다.
먼저 주 프로그램과 동일한 디렉토리에 MyModule.pm
을 만듭니다. 예를 들어 :
package MyModule;
use warnings; use strict;
sub foo {
my $p = shift;
print "foo called with param: $p\n";
bar();
}
sub bar {
print "bar called\n";
}
1; # don't delete this line
그런 다음 메인 프로그램에서이 패키지에서 잠수정을로드하고 호출 :
#/usr/bin/perl
use warnings; use strict;
use File::Basename qw(dirname);
use lib dirname(__FILE__); # prepend source directory to the include path
use MyModule;
MyModule::foo(42);
use lib dirname(__FILE__)
모듈의 주요 프로그램의 소스 디렉토리를 앞에 추가되는 문 경로를 포함한다.
실제로 lib 디렉토리 이름 (__ FILE__)을 사용하고 있습니까? 아니면 FILE을 위해 다른 것을 넣으십니까? 당신이 메인 프로그램의 소스 디렉토리를 모듈의 위치로 보내거나 그 반대로 보내는 것과 같은 것을 의미합니까? – John
@ 존 : 네, [\ _ \ _ FILE \ _ \ _] (http://perldoc.perl.org/functions/__FILE__.html)를 사용하고 있습니다. 이것은 완전한 소스 프로그램 경로를 제공하는 Perl 마술 변수입니다. - 스누피 – dwarring
@ 존 _prepend_함으로써, 나는 [@INC] (http://perldoc.perl.org/perlvar.html#%40INC) - 모듈 검색 경로로의 이동을 의미하지 않습니다. – dwarring
내가 만든 모든 서브 루틴 라이브러리 파일이 있는데, 이것을 util.pl이라고 부릅니다. $ HOME/perl/lib/util.pl에 있다고 가정 해 봅시다. 필요 '의 $ HOME/펄/lib 디렉토리/util.pl';
는 지금은/myscript.pl 내가 넣어 상단에
myscript.pl에서, $ HOME/펄/프로젝트 1에서 펄 스크립트가
이제 myscript.pl에서 util.pl의 모든 서브 루틴을 호출 할 수 있습니다. 예를 들어, undupespace()는 util.pl에 있습니다. myscript.pl에서 나는 그것을 다음과 같이 부를 수있다 : $ s = undupespace ($ s);
모듈을 설치 한 후 이것을 myscript.pl 맨 위에 넣습니다. File :: Copy;
OP를 원했습니까?
라이브러리 하나의 파일에 서브 루틴이 가득 찼습니까? 또는 개별 서브 루틴을 모두 포함하는 개별 파일의 폴더 위치? – John
- 1. C에서 서브 루틴이 Fortran과 유사한 서브 루틴이 있습니까?
- 2. 서브 루틴이 깨져
- 3. 서브 루틴이 모두 0을 반환합니다.
- 4. web.py + 서브 프로세스 = 여기 내 주요 파일의
- 5. Django 서브 디렉토리에 WordPress를 어떻게 설치합니까?
- 6. 서브 함수와 개인 함수
- 7. Perl 1,000 서브 루틴이 다시 정의되었습니다.
- 8. 서브 루틴이 완료되기 전에 Javascript 함수가 반환됩니다.
- 9. Perl에서 서브 루틴이 메소드로 호출되었는지 어떻게 확인할 수 있습니까?
- 10. 내 서브 루틴이 임의의 Barabasi-Albert 그래프를 생성하는 데 정확합니까?
- 11. 서브 디렉토리에 복제하기
- 12. OPEN 문에 포트란 서브 루틴이 끊어졌습니다.
- 13. 포트란 원소 함수와 원소 서브 루틴 비교
- 14. Perl 서브 루틴이 너무 오래 걸리면 어떻게 중지시킬 수 있습니까?
- 15. 서브 디렉토리에 내 webservice를 넣을 수 있습니까?
- 16. 주소를 서브 디렉토리에 연결
- 17. 서브 루틴이 호출 루틴의 스택에 쓰기가 안전한가요?
- 18. 2 부분의 AfterUpdate() 서브 루틴이 작동하지 않습니다.
- 19. Perl 서브 루틴이 빈 값을 반환합니다.
- 20. LWJGL GLSL 서브 루틴이 변경되지 않습니다
- 21. VBA 서브 루틴이 변수를 전달할 수 없습니다.
- 22. 서브 디렉토리에 경로 포함
- 23. 나는 두 개의 서브 루틴이 onWait
- 24. 양식로드 중에 서브 루틴이 건너 뜁니다.
- 25. 서브 루틴이 있지만 로컬 변수가없는 언어가 있습니까?
- 26. dlatrs 서브 루틴이 호출 서브 루틴에서 카운터를 할당 해제합니다.
- 27. 어떻게 같은 것을 가지고 있다면 네임 스페이스
- 28. 어떻게 콜백 함수와 같은 객체 메소드를 사용하는
- 29. C 함수와 같은 Imagettextext
- 30. 그란트를 서브 디렉토리에 넣기
[**'require' **] (http://perldoc.perl.org/functions/require.html) – Prix
@Prix LOL - 짧은 질문이므로 짧은 의견이 있으십니까? 당신이 옳을 수있는 동안 당신은 더 많은 설명을해야합니다. 여기에있는 모든 질문에 대해 누군가가 'RTFM에 대한 링크'로 대답 할 수 있지만, 이것이 바로 SOON의 핵심은 아닙니다. – jm666
"서브 루틴 파일"이란 무엇입니까? 이 모듈들입니까? '.pl' 스크립트? – friedo