小ネタ。5.10.0
以降いくつかの予約語が追加されたが、互換性のために標準では有効になっていない。
#!/usr/bin/perl use utf8; use strict; use warnings; binmode STDOUT => ":utf8"; # say は使えない say "Hello, World!"; # でも Defined-or 演算子はエラーにならない my $t = undef // "未定義です!";
実行例
$ perl testSay.pl String found where operator expected at testSay.pl line 8, near "say "Hello, World!"" (Do you need to predeclare say?) syntax error at testSay.pl line 8, near "say "Hello, World!"" Execution of testSay.pl aborted due to compilation errors.
そこで使う度に use feature
表記を追加する必要があった。
#!/usr/bin/perl use utf8; use strict; use warnings; # ↓ use 5.10.0; でも代用可能 use feature qw! say switch state !; binmode STDOUT => ":utf8"; say "メンドイ!";
これが 5.12.0
になってちょっぴり改善されていた。use 5.12.0
という構文により、全ての新機能と use strict
文が追加されたのと同じ効果が得られる。
#!/usr/bin/perl use utf8; use 5.12.0; use warnings; binmode STDOUT => ":utf8"; say "ちょっとだけ楽になった"; say undef // "未定義です!" # Defined-or 演算子 ... # ヤダヤダ演算子もおk
いっそのこと utf8
と warnings
も有効にして欲しかったのだが……。
ヤダヤダ演算子、他、Perl 5.12 の新機能 | blog.delphinus.dev
https://blog.delphinus.dev/2010/04/yada-yada-operator-and-others.html