$myPolygons = " A -1.1,2,0 -3.1,4,0 -5.1,6,0 -7.1,8,0 1,2,0 C 9,-8.1,0 7,-6.1,0 5,-4.1,0 3,-2.1,0 9,-8.1,0 "; while ($myFile =~ m{(.*?)}gs) { $tag = $1; if ($tag =~ m{(.*?)}gs) { $name = $1; if ($tag =~ m{(.*)}g) { $points = $1; while ($points =~ m{\G(-?\d*\.?\d*),0*\s*}gs) { push @{$points_by_name{$name}}, $1; } } } }