У меня вопрос о том, когда и как переменные в подпрограмме освобождают память. Сценарий является примером:Переменные в подпрограммах Perl не освобождают память
#!perl/bin/per
use strict;
sub A{
my $x= shift;
return ([$x]);
}
for my $i (1..10){
my $ref= &A($i);## the input changes in each round
my $ref2= &A(9);## the input is fixed in each round
print "$ref\t";
print "$ref2\n";
}
и выходы на экране были:
ARRAY(0x996e98) ARRAY(0x9b50c8)
ARRAY(0x996e98) ARRAY(0x9b50c8)
ARRAY(0x996e98) ARRAY(0x9b50c8)
ARRAY(0x996e98) ARRAY(0x9b50c8)
ARRAY(0x996e98) ARRAY(0x9b50c8)
ARRAY(0x996e98) ARRAY(0x9b50c8)
ARRAY(0x996e98) ARRAY(0x9b50c8)
ARRAY(0x996e98) ARRAY(0x9b50c8)
ARRAY(0x996e98) ARRAY(0x9b50c8)
ARRAY(0x996e98) ARRAY(0x9b50c8)
я ожидал, что ссылки должны быть изменены, если подпрограмма А был назвать более чем один раз, но на выходе ссылки фиксировались независимо от того, когда вход был изменен или нет. Может ли явное явление, что память, занимаемая переменной в подпрограммах, никогда не может быть выпущена до тех пор, пока весь сценарий не закончится? В противном случае, мой результат необычен?