in reply to screen out an untained array from a special array

Perhaps, another way to do it:

$ perl -le' my @data = 0 .. 31; my $input_data = "0, 6:4, 12:8 19:31"; my @input = sort { $b <=> $a } map { /(\d+):(\d+)/ ? $1 > $2 ? ( $2 .. + $1 ) : ( $1 .. $2 ) : $_ } $input_data =~ /\d+:\d+|\d+/g; splice @data, $_, 1 for @input; print for @data; ' 1 2 3 7 13 14 15 16 17 18