#!/usr/bin/perl -w use strict; my @array = ([1], [2], [3], [4], [5]); my %skip = (3 => 1); my @keep = grep {not exists $skip{$_->[0]}} @array; my @skip = grep { exists $skip{$_->[0]}} @array; my @new = (@keep, @skip);