Perl komunikat o błędzie "Do you need to predeclare say?"

Aby wyświetlić pasek na ekranie w języku programowania Perl jest wbudowana funkcja print. Ale poza print jeszcze i say.

Korzystanie z say w skryptach

Jeśli po prostu spróbować użyć say w skrypcie Perl, to będzie błąd. Oto przykład skryptu z błędem:

▶ Run
#!/usr/bin/perl

say 'Hello';

Jeżeli zapisz ten kod w pliku script.pl i wykonać perl script.pl, to na ekranie pojawi się błąd:

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.

Aby jednak skorzystać z say trzeba wyraźnie powiedzieć, że chcemy wykorzystać tę funkcjonalność języka z pomocą use feature qw(say);. Oto pełny tekst skryptu który działa:

▶ Run
#!/usr/bin/perl

use feature qw(say);

say 'Hello';

Wynik działania skryptu — na ekranie pojawi się tekst Hello.

Korzystanie z say w однострочниках

Niektóre zadania są bardzo wygodne rozwiązane za pomocą Perl однострочников, gdy cały tekst programu znajdują się w pliku, a jest przekazywana przez wartość parametru -e w wierszu polecenia.

Ale jeśli po prostu uruchomić perl -e 'say "Hello"', to na ekranie pojawi się błąd:

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.

Aby korzystać z say w однострочнике można używać w ten sam sposób co i dla skryptów: napisz w wierszu polecenia perl -e 'use feature qw(say); say "Hello"'.

Ale o wiele wygodniej jest korzystać z opcji -E zamiast -e. Parametr -E zawiera wszystkie cechy języka, tak, że uruchomienie perl -E 'say "Hello"' wyprowadzi na ekran oczekiwane miejsce Hello.

Inne artykuły