¿Alguien sabe qué análisis sintáctico de precedencia o decisiones dieron lugar a la advertencia de uso de 'cambio' sin paréntesis es ambigua 'que se emiten por un código como:¿Por qué la advertencia "Uso de" cambio "sin paréntesis es ambigua" emitida por Perl?
shift . 'some string';
# and not
(shift) . 'some string'; # or
shift() . 'some string';
¿Es esta intencionado para hacer ciertas construcciones sintácticas más fácil? ¿O es simplemente un artefacto de la forma en que funciona el analizador de perl?
Nota: esta es una discusión sobre el diseño del lenguaje, no un lugar para sugerir
"@{[shift]}some string"
Yo renuncié, pero "se alcanzó mi límite diario de votos". Creo que es un error, porque creo que SO bajó por unos minutos justo en el momento en que se suponía que debía reiniciarse, por lo que me están penalizando por haber votado ayer. –
en el caso de rand (; $) Puedo ver un caso para la advertencia, sin embargo, con shift no parece haberlo, ya que el prototipo de shift (; \ @) evitaría que una cadena o número fuera un argumento válido –
@Eric Strom: este error proviene del tokenizer, que no es tan inteligente. Sin tener en cuenta, el prototipo de shift no es realmente (; \ @), ya que eso lo convertiría en un operador de lista y, de hecho, es un operador unario. – ysth