(PERL) ссылки и do EXPR

Мимоход
Дата: 05.10.2006 11:34:23
Файл test_proc.pl
#!/usr/bin/perl

sub test(\%);

sub test(\%)
{
my %data = %{$_[0]};
print $data{'field'};
return 1;
}

test(%info); # работает

Файл test.pl
автор

#!/usr/bin/perl

do 'test_proc.pl';

%arg1=();
$arg{'field'}=1000;
test(%arg1); # не работает
test(\%arg1); # работает


Почему во включаемом файле test(%info) работает, а во внешнем test(%arg1) не работает, зато работает test(\%arg1) ?
scrip
Дата: 05.10.2006 11:45:46
Потому что прототипа функции (т.е. типа и числа аргументов) внешний скрипт не видит - и передает не ссылку на хеш, а сам хеш.
Делайте test_proc.pl модулем и подключайте через use вместо do.
Мимоход
Дата: 05.10.2006 11:59:39
Спасибо. Исчерпывающе.