Perlはご存知の通りTrue/Falseと言った真偽値を扱うBooleanな型は標準で備わっていない。例えば以下のテストは偽の値と解釈され全てFailする。 use Test::More; ok(0); # Fail ok(undef); # Fail ok(''); # Fail done_testing; つまり 0 undef / 未定義値 空文字列 が偽として解釈される。普段はこうした挙動で問題は無いんだけど、キャッシュの制御の時に困ってしまい考えた挙げ句、解決策のような実装が見つかったので紹介とツッコミいただきたい次第。 追記 以下、ふつーに defined でごにょればイケる! unless(defined $value) { ...; } koba04さん、toku_bass さんあざっす。とりま自分のアプリで試してみます。 キャッシュの常套手段的にこんなフローをよく使う。