Можно ли сделать ссылки без предварительного объявления переменной? - PullRequest
6 голосов
/ 08 апреля 2011

У меня есть этот код, который работает

my @new = keys %h1;
my @old = keys %h2;

function(\@new, \@old);

, но можно ли это сделать без предварительного объявления переменных?

function должны иметь свои аргументы в виде ссылок .

Ответы [ 2 ]

7 голосов
/ 08 апреля 2011
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'
        ];
6 голосов
/ 08 апреля 2011
function([ keys %h1 ], [ keys %h2 ]);

С perldoc perlref:

Ссылка на анонимный массив может быть создан с использованием квадратных скобок:

$ arrayref = [1, 2, ['a', 'b', 'c']];

...