foreach my $key (keys %points_by_name) { my $intersectionfound=0; for (my $i=0; $i<=@{$points_by_name{$key}}-4; $i+=2) { if (sub(@{$points_by_name{$key}}[$i..$i+3],$x2, $y2, $x3, $y3) and not $intersectionfound) { # found the first intersection of $key } } }