my @list = ( 41888, 41889, 41890, 41892, 41895 ); my @missing = do { my %missing; undef @missing{ $list[ 0 ] .. $list[ -1 ] }; delete @missing{ @list }; keys %missing; }; #### my @missing; { my $i = 0; for ( $list[ 0 ] .. $list[ -1 ] ) { ++$i, next if $_ == $list[ $i ]; push @missing, $_; } } #### my @missing = do { my $i = 0; grep { $_ == $list[ $i ] ? ++$i && 0 : 1 } $list[ 0 ] .. $list[ -1 ]; };