perlも同じように書けば、期待した動作になる
#!/usr/bin/perl
{
    my @a;
    my $i = 0;
    {
        my $j = $i;
        push @a, sub(){ print $j, "\n" };
    }
    $i = 1;
    {
        my $j = $i;
        push @a, sub(){ print $j, "\n" };
    }
    $a[0]->();
    $a[1]->();
}