Во-первых, вы поступили правильно.Но я думаю, что вы вызываете функцию в скалярном контексте, поэтому вы получаете только количество элементов в списке / массиве.
sub routine
{
my @array = ("foo", "bar");
return @array;
}
my $a = routine(); # a will be **2** instead of an array ("foo", "bar")
my @a = routine(); # a will be an array ("foo", "bar")
Если вам действительно нужно вернуть массив, и вы хотите убедиться, что подпрограмма была вызвана правильно.Вы можете использовать функцию wantarray()
.
sub routine
{
my @array = ("foo", "bar");
return @array if wantarray;
die "Wrong invoking context";
}
Во-вторых, вы можете использовать push;
@nestedArray = ("hello", "there");
@narray = ("the", "world");
push @narray, @nestedArray; # @narray is ("the", "world", "hello", "there")