Perl mensaje de error "Do you need to predeclare say?"

Para mostrar una cadena en la pantalla en el lenguaje de programación Perl integrada la función de print. Pero además de print todavía hay say.

El uso de say en los scripts

Si simplemente intenta utilizar say en Perl script, lo que se producirá un error. He aquí un ejemplo de un script con el siguiente error:

▶ Run
#!/usr/bin/perl

say 'Hello';

Si guardar el código en un archivo script.pl y realizar perl script.pl, en la pantalla aparecerá el mensaje de error:

String found where operator expected at script.pl line 3, near "say 'Hello'"
    (Do you need to predeclare say?)
syntax error at script.pl line 3, near "say 'Hello'"
Execution of script.pl aborted due to compilation errors.

Para todo aprovechar say debe decir claramente que queremos utilizar este фичу idioma con la ayuda de use feature qw(say);. He aquí el texto completo de script que funciona:

▶ Run
#!/usr/bin/perl

use feature qw(say);

say 'Hello';

El resultado de la ejecución del script — en la pantalla aparece el texto Hello.

El uso de say en однострочниках

Algunas de las tareas es muy conveniente de resolver con Perl однострочников, cuando todo el texto del programa, que no se encuentran en el archivo, y se pasa el valor del parámetro -e en la línea de comandos.

Pero si simplemente ejecutar perl -e 'say "Hello"', en la pantalla aparecerá el mensaje de error:

String found where operator expected at -e line 1, near "say "Hello""
    (Do you need to predeclare say?)
syntax error at -e line 1, near "say "Hello""
Execution of -e aborted due to compilation errors.

Para utilizar say en однострочнике puede utilizar el mismo método que para los scripts: escribir en el símbolo del sistema perl -e 'use feature qw(say); say "Hello"'.

Pero es mucho más cómodo utilizar la opción -E en lugar de -e. La opción -E incluye slave de la lengua, por lo que el lanzamiento de la perl -E 'say "Hello"' muestra que el valor esperado de la línea Hello.

Otros articulos