При вызове процедуры из модуля:
(@mass1, %mass2) = MyModule(@mass3);
Процедура модуля:
sub MyModule {
my %temp_mass;
foreach (@_) {
if (s///gi) {$temp_mass{$1} .= $_; $_ = \'\'}
}
return (@_, %temp_mass)
}
Не присваивает значения @mass1 = @_ и %mass2 = %temp_mass, хотя в самой процедуре @_ и %temp_mass определены...
Пришлось изменить немного по другому:
@mass1 = @mass3;
%mass2 = MyModule(@mass1);
sub MyModule {
my %temp_mass;
foreach (@_) {
if (s///gi) {$temp_mass{$1} .= $_; $_ = \'\'}
}
return %temp_mass
}
При этом я получаю верные значения @mass1 и %mass2,
Но как-нибудь возможно использование первого варианта, либо использовать конструкцию:
@mass1 = @mass3;
MyModule(@mass3, %mass2);
sub MyModule {
foreach (@_) {
if (s///gi) {(?) .= $_; $_ = \'\'}
}
return 1
}
Как выбрать элемент хеша по-умолчанию? при использовании $_{$1} = присваивается значение не $_, а $1, т.е. $_{$1} = $1... как побороть не пойму...
P.S. т.е. я получаю %mass2 но при этом значение ключа получается сам ключ...