use strict; use warnings; $, = ","; $\ = "\n"; $" = ";"; my %r = ( 0 => 0, 1 => 0, 2 => 0, 3 => 0 ); foreach (1..10) { my $x = $_ % 4; ++$r{$x}; sub END { $, = " => "; foreach my $k ( keys %r ) { print __LINE__, "sub END block with k", $k, $r{$k} } }; } foreach(1 .. 10) { my $x = $_ % 4; print "$_ => $x => $r{$x}"}; print __LINE__, "END OF SCRIPT"; __END__ __OUTPUT__ 1 => 1 => 3 2 => 2 => 3 3 => 3 => 2 4 => 0 => 2 5 => 1 => 3 6 => 2 => 3 7 => 3 => 2 8 => 0 => 2 9 => 1 => 3 10 => 2 => 3 22,END OF SCRIPT 16 => sub END block with k => 0 => 2 16 => sub END block with k => 1 => 3 16 => sub END block with k => 3 => 2 16 => sub END block with k => 2 => 3