Deine These 'strict' würde einen sowieso zwingen bei Iteratorvariablen 'my' zu nutzen ist leider so nicht richtig, leider!
Doch, ist sie. Perl meckert bei Deinem Beispiel nur deshalb nicht, weil $x deklariert war.
Eigentlich ein Mangel von "strict", oder?
Nein, m.E. ein Mangel im Perlkonzept. So, wie Du es in Deinem Beispiel geschrieben hast, würde man eine lexikalische Variable manipulieren, tut man aber nicht. Würde man my weglassen und die Variable nirgendwo anders im selben Scope deklarieren, würde man eine Packagevariable manipulieren, tut man aber auch nicht.
Es existiert nur ein einziger Weg, lexikalische Variablen zu deklarieren, nämlich via my (so lese ich jedenfalls perlsub). Tut man dies nicht, erhält man automatisch eine Packagevariable. Und in dieses Konzept passen die Iterationsvariablen nicht rein, sie sind weder lexikalisch (wenn ohne my deklariert) noch Packagevariablen ($main::x ist undef).
Siechfred
Hinter den Kulissen passiert viel mehr, als man denkt, aber meistens nicht das, was man denkt.