#!/opt/bin/perl use strict; select STDERR; $| = 1; print "\nCount, Last value:\n"; for my $count ( 2**15 .. 2**18) { print "Testing: $count -> "; my $head = []; my $node = $head; ( $node ) = @{ $node } = ( [], $_ ) for 1 .. $count; bless $node, 'TailNode'; my $value = ''; for( $node = $head ; @$node ; ) { ( $node, $value ) = @$node; } print "$value\n"; # $head goes out of scope and segfaults here. } package TailNode; DESTROY { print "Destroying $_[0]\n"; } __END__ Trial runs: Teseting: 37405 -> 37405 Destroying TailNode=ARRAY(0x82d7f40) Teseting: 37406 -> 37406 Destroying TailNode=ARRAY(0x83425b0) Teseting: 37407 -> 37407 Segmentation fault