Ответ 1
У вас есть ответ в вашем вопросе: -)
use warnings;
use strict;
sub foo() {
my @arr = ();
push @arr, "hello", ", ", "world", "\n";
my $arf = \@arr;
return @{$arf}; # <- here
}
my @bar = foo();
map { print; } (@bar);
Я знаю, что могу создать массив и ссылку на массив следующим образом:
my @arr = ();
my $rarr = \@arr;
Затем я могу выполнить итерацию по ссылке массива следующим образом:
foreach my $i (@{$rarr}){
}
Есть ли способ скопировать или преобразовать массив ref в обычный массив, чтобы я мог вернуть его из функции? (В идеале без использования этого цикла foreach и нажатия).
У вас есть ответ в вашем вопросе: -)
use warnings;
use strict;
sub foo() {
my @arr = ();
push @arr, "hello", ", ", "world", "\n";
my $arf = \@arr;
return @{$arf}; # <- here
}
my @bar = foo();
map { print; } (@bar);
Вот так:
return @{$reference};
Затем вы просто возвращаете ссылку с разыменованием.
вы можете скопировать массив, просто назначив новый массив:
my @copy_of_array = @$array_ref;
НО, вам не нужно это делать, чтобы вернуть измененный массив. Поскольку это ссылка на массив, обновление массива через ссылку - это все, что вам нужно сделать!