2016-03-12 10 views
7

私はそれが[email protected]のためにタイプミスであることを期待し、この出くわした:「パッケージを経由して、オブジェクトのメソッドを見つけることができません「新しい」未

use strict; 
use warnings; 

eval { 
    my $error = Not::Here->new(); 
}; 

warn @$; 

そして、私の驚きに、それは、この出力::ここで」(おそらくあなたがロードするのを忘れて、 『未::ここで』?)dollar_array.plライン6 で... dollar_array.pl線9

でキャッチ私はいずれかを見つけることができませんよに関する情報、それがperlvarに上場されていない、またeval

に出力ショーcaught at ...以来、perlのの例外処理で何かあるようです。

答えて

14

@$はまだPerlでは意味がありません。 $$が存在するために存在します(各特殊変数 "sigil-char"については、他のすべての "another_sigil-char"変数が存在します)。したがって、warnには引数がありません。warn;だけを使用して確認できます。同じ出力が得られます。

それでは、warnのドキュメントを読んでみましょう:

出力が空で、[email protected]はすでに(通常は前回のeval)値が含まれている場合、その値は[email protected]から"\t...caught"を付加した後に使用されます。これはほぼ滞在するのに便利ですが、dieと完全には似ていません。

[email protected]には、evalの例外が含まれているため、動作は予期されています。

関連する問題