там - только начал изучать Perl.
Это то, что я делаю, чтобы получить массив в подфункцию - это можно сделать проще в 1 строку?
sub my_sub { my $ref_array = shift; my @array = @$ref_array; }
Если вы хотите эффект shift,
shift
sub my_sub { my @array = @{+shift}; }
унарный + оператор заставляет shift рассматриваться как выражение, а не как имя переменной. (В противном случае @{shift} означает то же самое, что и @shift.)
+
@{shift}
@shift
Другой подход заключается в том, чтобы не беспокоиться о том, что он является arrayref - просто оставьте его таким, и используйте его в остальной части вашего подпрограммы как есть.
Вы могли бы упростить так же, как
sub my_sub { my @array = @{$_[0]}; }
Где @_ - массив / список по умолчанию, используемый при передаче параметров.
@_
Это чертовски намного дешевле:
local *array = shift();