use strict; use warnings; use Data::Dumper; my @old = ( 2, 5, 13, undef, 6, 8, undef, 3); my @new; while (@old) {   my $val = shift @old;   push @new, $val if defined $val; } print Dumper(\@new);