Perl mensagem de erro "Do you need to predeclare say?"

Para imprimir uma linha na tela, na linguagem de programação Perl tem um built-in a função print. Mas, além de print e say.

O uso de say em scripts

Se você simplesmente tentar usar say em Perl script, não haverá erro. Aqui está um exemplo de um script com o erro:

▶ Run
#!/usr/bin/perl

say 'Hello';

Se você salvar o código em um arquivo de script.pl e executar perl script.pl, a tela irá aparecer o erro:

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 ainda aproveitar say precisa dizer explicitamente o que nós queremos usar essa фичу o idioma com a ajuda de use feature qw(say);. Aqui está o texto completo do script que funciona:

▶ Run
#!/usr/bin/perl

use feature qw(say);

say 'Hello';

O resultado da execução do script — aparecerá na tela o texto Hello.

O uso de say em однострочниках

Algumas tarefas muito conveniente para lidar com um Perl однострочников, quando todo o texto do programa não estão no arquivo, e é passado para o parâmetro -e na linha de comandos.

Mas se simplesmente executar perl -e 'say "Hello"', a tela irá aparecer o erro:

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 usar say em однострочнике pode ser usado da mesma forma que para a execução de scripts: escrever na linha de comandos, perl -e 'use feature qw(say); say "Hello"'.

Mas muito mais conveniente usar a opção -E , em vez de -e. A opção -E inclui todos os recursos da linguagem, de modo que a execução de perl -E 'say "Hello"' exibirá esperada linha Hello.

Outros artigos