2016-09-08 9 views
0

は、私は、PerlスクリプトとPerlモジュール(単純なスケルトン)を持っている:アクセスVARS

module.pm

package My::Package; 
use strict; 
sub mySub() { 
return "Answer is: ".$checkIt; 
} 
1 

script.pl

#!/usr/bin/env perl 
use strict; 
my $checkIt = "someTextHere"; 
require My::Package; 
print mySub(); #or print My::Package->mySub(); 

しかし、それだけでAnswer is:を返します。$ checkItのように、呼び出し側スクリプト(script.pl)からvarsをロードできるようにするには、My :: Package(module.pm)が必要です。 これでお手伝いできますか?

ご協力いただきましてありがとうございます。

答えて

1

プログラムをより小さな部分(クラス、モジュール、サブルーチンなど)に分割できるという目的は、グローバル変数の共有を最小限に抑え、多くの場合、排除できるようにすることです。パラメータを受け入れるようにサブルーチンを設定しないでください。

Module.pm

package Module; 

use Exporter qw(import); 
our @EXPORT_OK = qw(my_sub); 

sub my_sub { 
    my ($param) = @_; 
    return "Answer is: $param\n"; 
} 
1; 

script.pl

use warnings; 
use strict; 

use Module qw(my_sub); 

my $string = "hello, world!\n"; 

my $return = my_sub($string); 

print $return; 

出力:

Answer is: hello, world!