2009-09-03 3 views

답변

6

다른 방법이 있지만 모두 심각한 문제가 있습니다. 모듈은 갈 길이고 복잡하지 않아도됩니다. 다음은 기본 템플릿입니다.

package Mod; 

use strict; 
use warnings; 

use Exporter 'import'; 

#list of functions/package variables to automatically export 
our @EXPORT = qw(
    always_exported 
); 

#list of functions/package variables to export on request 
our @EXPORT_OK = qw(
    exported_on_request 
    also_exported_on_request 
); 

sub always_exported { print "Hi\n" } 

sub exported_on_request { print "Hello\n" } 

sub also_exported_on_request { print "hello world\n" } 

1; #this 1; is required, see perldoc perlmod for details 

/home/user/perllib과 같은 디렉토리를 만듭니다. 이 코드를 해당 디렉토리의 Mod.pm이라는 파일에 넣으십시오. 다음과 같이 모듈을 사용할 수 있습니다 :

#!/usr/bin/perl 

use strict; 
use warnings; 

#this line tells Perl where your custom modules are 
use lib '/home/user/perllib'; 

use Mod qw/exported_on_request/; 

always_exported(); 
exported_on_request(); 

물론 원하는대로 파일의 이름을 지정할 수 있습니다. 패키지와 파일을 같은 이름으로 지정하는 것이 좋습니다. 패키지 이름에 :: (예 : File::Find)을 사용하려면 /home/user/perllib에 하위 디렉토리를 만들어야합니다. ::/과 동일하므로 My::Neat::Module/home/user/perllib/My/Neat/Module.pm 파일에 있습니다. 당신은 가장 강력한 방법을 모듈이다 사용하고, 도움이 될 것입니다 모듈을 사용하는 방법을 학습 perldoc Exporter

+0

감사합니다. , 그것은 웹에서 찾은 것보다 더 분명합니다. 모든 수출품을 이해할 수는 없지만 귀하의 예에서 사용하는 방법을 이해합니다. –

12

일반적인 기능을 module에 넣으십시오. 자세한 내용은 perldoc perlmod을 참조하십시오.

+0

모듈없이이 작업을 수행하는 방법은 없나요을? 나는 Perl을 잘 다루지 못했고 javascript-ish와 같은 솔루션이 더 있었으면 좋겠다. –

+0

라이브러리를 만들 수 있습니다. 다시 말하지만, 우리는 내 책에서 그 모든 것을 다룹니다. :) –

2

Intermediate Perl의 약 1/3은이 주제에만 사용됩니다.

+2

이것은 대답이 아니라 논평으로 나를 공격합니다. – Telemachus

+0

모듈 또는 문서 페이지로 연결하는 것이 답입니다. –

+1

@brian : 그래, 그것도 꽤 많은 의견이다. (당신이 신안의 대답을 언급했다면, 나는 적어도 모듈에 공통적 인 내용을 넣는다는 단서 문장이있다."당신은 단지"나의 책은 당신에게이 일을하는 법을 알려줍니다. "라고 대답했습니다. 당신의 반응은 사실 저를 보았을 때 시안의 대답에 대한 논평이었습니다.) – Telemachus

0

Exporter에 대한 perldoc perlmod에서 모듈에 대한 더 자세한 내용을보실 수 있습니다.

do 기능이 덜 효율적입니다. "mysub.pl」라고, 별도의 파일에 코드를 추출하고,

do 'mysub.pl'; 

이 다음 읽을 것이다 파일의 내용을 평가 후면. 귀하의 모든 일반적인 기능을 넣고 위의 라인을 포함하는 다른 스크립트에서 호출 할 경우

0

당신은

require "some_lib_file.pl"; 

를 사용할 수 있습니다. 예를 들어

:

146$ cat tools.pl 
# this is a common function we are going to call from other scripts 
sub util() 
{ 
    my $v = shift; 
    return "$v\n"; 
} 
1; # note this 1; the 'required' script needs to end with a true value 

147$ cat test.pl 
#!/bin/perl5.8 -w 
require 'tools.pl'; 
print "starting $0\n"; 
print util("asdfasfdas"); 
exit(0); 

148$ cat test2.pl 
#!/bin/perl5.8 -w 
require "tools.pl"; 
print "starting $0\n"; 
print util(1); 
exit(0); 

그리고 다음과 같은 결과를 얻을 것입니다 test.pltest2.pl을 실행 :

149$ test.pl 
starting test.pl 
asdfasfdas 

150$ test2.pl 
starting test2.pl 
1 
관련 문제