Perlのガベージコレクションの話をしたいと思います。 相方から、こんな質問が入りました。 相方の発言 sub h{ my @c = 1..10; return \@c; # ここは大丈夫? } my $d = h(); print $_, "\n" for @$d; ってできないよね? C言語的な意味で。 私の発言 できる。 Perl的な意味で。 C言語では それでは、なぜ相方はこんな発言をしたのだろうか。 C言語のソースを見てみよう。 まず、正常なものから、 #include <stdio.h> int main(void){ int i[10]; int j = 0; for(j=0;j<10;j++){ i[j] = j; } for(j=0;j<10;j++){ printf("%d \n", *(i+j)); } return 0; } 結果: 0 1 2 3 4 5 6 7