Образец кода:
m1.pm
my $a;
my $b;
sub init {
$a = shift;
$b = shift;
}
sub printab {
print "a = -$a-\n";
print "b = -$b-\n";
}
1;
m2.pm
my $a;
my $b;
sub init {
$a = shift;
$b = shift;
}
1;
test.pl
use strict;
use warnings;
use m1;
use m2;
init('hello', 'world');
printab();
Бежать:
$ perl test.pl
a = --
b = --
$
Что происходит, так это то, что вызов init('hello', 'world')
отображается на m2.pm
и инициализирует там переменные ($a
и $b
).
В этом есть смысл, но я не понимаю, почему эти значения недоступны в test.pl
.
Есть ли что-то принципиально неправильное, что я пытаюсь сделать здесь? Как правильно использовать два модуля с одинаковыми именами подпрограмм и переменных?
Как именно работает Perl
use
? Было бы полезно, если бы кто-нибудь мог сравнить это с директивой C#include
.
import
или наследует отExporter
. Если нет, вы не экспортируете подпрограммы вtest.pl
. - person Eric Strom   schedule 10.11.2010