2013-07-05 2 views
0

Я знаю, я могу использовать Exporter и @ EXPORT_OK/@ EXPORT для использования подпрограммы другого модуля, но как я могу получить доступ к переменной другого модуля? Другой вопрос, в perl, есть ли разница между статической переменной и нестатической переменной? Другими словами, могу ли я получить доступ к переменной другого модуля как с именем модуля, так и с ссылкой на модуль?Как использовать переменную, принадлежащую другому модулю?

Например, Module MyModule.pm;

package MyModule; 
our $tmp=1; 
sub new{ 
$this={}; 
bless $this; 
return $this; 
} 
1; 

Perl файл test.pl

Use MyModule; 

Как получить доступ к $ TMP в test.pl? И, если я изменю $ tmp на 2 в test.pl, каков результат, если я получу его в другом файле perl temp2.pl?

+0

http://stackoverflow.com/questions/3109672/how-to-make-a-hash-available-in-another-module – daxim

ответ

4

Вы можете получить доступ к переменной, как это:

$MyModule::tmp 

Теперь, когда вы знаете, как получить доступ к переменной, вы будете в состоянии подтвердить экспериментальным путем, что изменения, внесенные в переменную в одном месте будет видно в другом месте.

Я не уверен, что ваш вопрос касается статического и нестатического. Я знаю, что это отличие не особенно актуально в Perl.

2

На самом деле вы можете экспортировать переменные, используя Exporter! Это говорит, что вы, возможно, не захотите. Как упоминает FMc, вы можете использовать полностью квалифицированное имя (с ::) для доступа к переменным пакета в других модулях. Переменная пакета - одна из созданных с our, эта техника не будет работать с переменными my (и, следовательно, имя :-))

0

Не используйте переменные в Exporter. Вместо этого напишите метод доступа (и измените $ tmp на переменную my).

sub get_tmp { 
    return $tmp; 
}