$ perl -le' use warnings; use strict; my @c = 1 .. 10_000_000; print @c . " @c[0..19]"; my @d; for my $dd ( @c ) { push @d, $dd % 2; } print @d . " @d[0..19]"; my @e; for my $ee ( @d ) { if ( !$ee ) { push @e, $ee; } } print @e . " @e[0..19]"; ' 10000000 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 10000000 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 50000000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 #### $ perl -le' use warnings; use strict; my @c = 1 .. 10_000_000; print @c . " @c[0..19]"; my @d = map $_%2, @c; print @d . " @d[0..19]"; my @e = grep /0/, @d; print @e . " @e[0..19]"; ' 10000000 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 10000000 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 5000000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 #### $ perl -le' my @c = 1 .. 10_000_000; print @c . " @c[0..19]"; my @e = ( 0 ) x ( @c / 2 ); print @e . " @e[0..19]"; ' 10000000 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 5000000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0