sub minmax { ( min(@_), max(@_) ) } # helper function for (@list_of_Num_Extraction) { if (/^(\d+),(\d+):(\d+),(\d+)$/) { my ($l,$r, $t,$b) = (minmax($1,$3), minmax($2,$4)); for my $x ($l .. $r) { # left to right for my $y ($t .. $b) { # top to bottom $Unique_Num_List{($x-1)*$num_columns + $y} = "($x,$y)"; } } } # and so on ... }