1. ホーム
  2. perl

[解決済み] なぜこのプログラムは有効なのですか?構文エラーを作ろうとした

2022-03-19 21:49:47

質問

ActiveStateの32bit版を使用しています。 ActivePerl 5.14.2 on Windows 7. Git の pre-commit フックを使って、構文エラーでチェックインされたプログラムを検出する方法をいじりたいと思いました。(どういうわけか、こんなひどいコミットをしてしまいました。) そこで、テストプログラムとして、ランダムにこれを書き留めました。

use strict;
use warnings;

Syntax error!

exit 0;

しかし、警告もなくコンパイル・実行され、終了時にerrorlevelが0になります。この構文はどのように有効なのでしょうか?

どのように解決するのですか?

Perlには、間接法表記法(indirect method notation)という構文があります。これを使うと

Foo->new($bar)

という書き方になります。

new Foo $bar

ということは

Syntax error ! exit 0;

と同じです。

error->Syntax(! exit 0);

または

error->Syntax(!exit(0));

これは有効な構文であるだけでなく、最初に実行されるのが exit(0) .