Yeah, I edited my post, that's because of your loop, which is poorly written because of how the data is (poorly too) initially stored, but still you should be using $readini and $ini and not $read
Using:
while $ini(points.ini,%i) {
if ($1.* iswm $v1) {
aline @. $gettok($v2,-1,46) $readini(points.ini,$v2,points)
}
inc %i
}
should be much much much much faster