ハッシュが空かどうかを調べたいときは、以下のサンプルを参考にしてください。 決して、defined()の否定を使わないように、defined()は、スカラーで未定義の判定に使います。 ◆サンプル %hash =(); #%hash = (aaa => 111, bbb => 222, ccc => 333); if (!%hash) { print '空です!', "\n"; } else{ print '空でない!', "\n"; } ◆引用 defined(%hash) is deprecated (D deprecated) defined() は未定義の スカラ 値を調べるので、ハッシュに使っても普通は無意味です。ハッシュが空かどうかを調べたい場合は、例えば単に if (%hash) { # not empty } としてください。 http://perldoc.jp/docs/p