$ perl -MO=Deparse -e 'while() { }'
while (1) {
();
}
-e syntax OK
Parece que while() {}
y while (1) {}
son equivalentes. También tenga en cuenta que los paréntesis vacíos * se insertan en el bloque vacío.
Otro ejemplo de comportamiento compilador predefinido:
$ perl -MO=Deparse -e 'while (<>) { }'
while (defined($_ = <ARGV>)) {
();
}
-e syntax OK
Yo diría que esto es sólo la documentación que no informaron un caso especial.
* — Para ser precisos, se inserta el código de operación stub
. No hace nada, pero sirve un objetivo goto para el código de operación enterloop
. No hay una razón real para notar esto. Deparse denota este stub
op utilizando parens vacíos, ya que los parens no generan código.
Prefiero 'while (1)' para enfatizar la intención. – JRFerguson