私はActiveStateの32ビットを実行していますアクティブパールWindows 7 上の 5.14.2。構文エラーのあるプログラムがチェックインされているのを検出するために、Git のコミット前フックをいじってみたくなりました。(どういうわけか、このような悪いコミットを実行してしまったのです。) そこで、テスト プログラムとして、これをランダムに書き留めました。
use strict;
use warnings;
Syntax error!
exit 0;
ただし、警告なしでコンパイルおよび実行され、終了時にエラーレベルは 0 になります。これは有効な構文ですか?
ベストアンサー1
Perlには「間接メソッド記法」と呼ばれる構文があります。これにより
Foo->new($bar)
と書くと
new Foo $bar
つまり
Syntax error ! exit 0;
と同じです
error->Syntax(! exit 0);
または
error->Syntax(!exit(0));
これは有効な構文であるだけでなく、最初に実行されるのは であるため、実行時エラーは発生しませんexit(0)
。
この「機能」は、次のいずれかの方法で無効にできます。
no feature qw( indirect ); # Perl 5.32+
use v5.36; # Perl 5.36+
あるいは、次の方法で警告を受け取ることもできます。
no indirect; # CPAN module