2016-09-08 2 views
0

У меня есть скрипт на языке Perl и модуль Perl (только простые скелеты), как показано ниже:Доступ ВАР из сценария PERL внутри внешнего пакета PERL

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: Мне нужно My :: Package (module.pm), чтобы иметь возможность загружать vars из скрипта caller (script.pl), например $ checkIt. Можете ли вы мне помочь, пожалуйста?

Любая помощь приветствуется!

ответ

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!