とりま自分のアプリで試してみます。キャッシュの常套手段的にこんなフローをよく使う。キャッシュにヒットしたらその値をそのまま使うとって来た値が偽だったら算出するメソッドを発行する算出された値をキャッシュにsetするうんで、実装はこんな感じ。$value;で、問題になるのは上のコードで言う「get_value」サブルーティンが「空」など偽と判断される値を返す時。すればせっかく値をsetしているのに再びgetしたタイミングにこのコードだと値が偽であることからunlessブロックに入り、再度「get_value」が呼ばれることになる。「get_value」を呼び出すためのコストがかかる場合は一度「空」が返却されたんだからそれを覚えておいてもらいたい。「空であること」自体をキャッシュさせたいってことになる。boolean.pm。真偽につかえる値を提供する。「false」だけを使う。falsefalseで特別に偽を定義することが出来るので、キャッシュの件だと、falseを値としてsetしちゃって、後ほどgetする時に判断させれば「空であること」自体をキャッシュさせることが出来そう。こんな感じのコードになった。null}一回目の実行結果。0このコンテキストだと「0」になっているけど、boolean::falseがsetされているはず。もっかい実行してみる。空であると認識している。これでキャッシュの有効期限内だったら空が帰って来たよーという条件の元ごにょごにょ出来そう。