У меня есть этот код, который работает
my @new = keys %h1; my @old = keys %h2; function(\@new, \@old);
, но можно ли это сделать без предварительного объявления переменных?
function должны иметь свои аргументы в виде ссылок .
function
use strict; use Data::Dumper; my %test = (key1 => "value",key2 => "value2"); my %test2 = (key3 => "value3",key4 => "value4"); test_sub([keys %test], [keys %test2]); sub test_sub{ my $ref_arr = shift; my $ref_arr2 = shift; print Dumper($ref_arr); print Dumper($ref_arr2); }
Выход:
$VAR1 = [ 'key2', 'key1' ]; $VAR1 = [ 'key4', 'key3' ];
function([ keys %h1 ], [ keys %h2 ]);
С perldoc perlref:
perldoc perlref
Ссылка на анонимный массив может быть создан с использованием квадратных скобок: $ arrayref = [1, 2, ['a', 'b', 'c']];
Ссылка на анонимный массив может быть создан с использованием квадратных скобок:
$ arrayref = [1, 2, ['a', 'b', 'c']];