Как превратить объект в ссылку на массив? - PullRequest
2 голосов
/ 28 марта 2011

У меня есть эта функция

array_diff(\@DNs, \@prev_DNs);

, который должен принимать ссылки на массивы в качестве аргументов.

Проблема в том, что я получаю prev_DNs как объект от

my $prev_DNs = YAML::Syck::LoadFile('temp-previous_DNs.yaml');
print Dumper $prev_DNs;

который выводит

$VAR1 = [
          'abcdef'
        ];

Я пытался с

array_diff(\@DNs, \$prev_DNs);

но это не сработало.

Есть предложения о том, как передать $prev_DNs ссылку на массив?

Ответы [ 2 ]

10 голосов
/ 28 марта 2011

Это уже ссылка на массив, на самом деле. Таким образом, вы фактически передавали ссылку на ссылку, ставя перед ней префикс \. Вам просто нужно передать его как $prev_DNs, и он должен работать.

5 голосов
/ 28 марта 2011

Согласно вашему выводу Data :: Dumper, $prev_DNs является ссылкой на массив, поэтому просто используйте

array_diff(\@DNs, $prev_DNs);

Использование

array_diff(\@DNs, \$prev_DNs);

передает ссылку на ссылку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...