Perl message d'erreur "Do you need to predeclare say?"

Pour afficher une chaîne à l'écran dans un langage de programmation Perl intègre fonction print. Mais en print il y a encore des say.

L'utilisation de say dans les scripts

Si il suffit d'essayer d'utiliser say dans un script Perl, ce sera une erreur. Voici un exemple de script avec une erreur:

▶ Run
#!/usr/bin/perl

say 'Hello';

Si vous enregistrez ce code dans un fichier script.pl et exécuter perl script.pl, le système affiche une erreur:

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.

Afin de tout de même profiter de say faut clairement dire que nous voulons utiliser cette caractéristique de la langue avec l'aide de use feature qw(say);. Voici le texte complet du script qui fonctionne:

▶ Run
#!/usr/bin/perl

use feature qw(say);

say 'Hello';

Le résultat du script s'affiche le texte Hello.

L'utilisation de say dans однострочниках

Quelques-unes des tâches très pratique à résoudre à l'aide de Perl однострочников, lorsque le texte d'un programme ne se trouvent pas dans le fichier, et transmis à la valeur du paramètre -e à l'invite de commande.

Mais si il suffit de lancer perl -e 'say "Hello"', le système affiche une erreur:

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.

Afin d'utiliser say à однострочнике vous pouvez utiliser de la même manière que pour les scripts: écrire dans la ligne de commande perl -e 'use feature qw(say); say "Hello"'.

Mais beaucoup plus pratique d'utiliser l'option -E au lieu de -e. L'option -E comprend toutes les fonctionnalités de la langue, ainsi que le lancement de la perl -E 'say "Hello"' affiche l'espérance d'une ligne Hello.

Autres articles