Синтаксис Perl - PullRequest
       16

Синтаксис Perl

0 голосов
/ 29 января 2011

там - только начал изучать Perl.

Это то, что я делаю, чтобы получить массив в подфункцию - это можно сделать проще в 1 строку?

sub my_sub {
    my $ref_array = shift;
    my @array = @$ref_array;
}

Ответы [ 4 ]

3 голосов
/ 29 января 2011

Если вы хотите эффект shift,

sub my_sub {
    my @array = @{+shift};
}

унарный + оператор заставляет shift рассматриваться как выражение, а не как имя переменной. (В противном случае @{shift} означает то же самое, что и @shift.)

2 голосов
/ 29 января 2011

Другой подход заключается в том, чтобы не беспокоиться о том, что он является arrayref - просто оставьте его таким, и используйте его в остальной части вашего подпрограммы как есть.

2 голосов
/ 29 января 2011

Вы могли бы упростить так же, как

sub my_sub { 
  my @array = @{$_[0]};
}

Где @_ - массив / список по умолчанию, используемый при передаче параметров.

0 голосов
/ 29 января 2011

Это чертовски намного дешевле:

local *array = shift();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...