my @uids = ....; # List of used UIDs my %uids; @uids{@uids} = (); my $uid = 1001; {$uid++, redo if exist $uids{$uid}} say "First unused uid: $uid";