あのう初歩的な質問なんですが、
サブルーチン foo の中でサブルーチン bar を呼び出したとき、
bar が失敗したらウォーニングを表示して即座に undef を返したいんですが、

 $x = bar() or warn "$!\n", return;

と書くだけで本当に大丈夫なんでしょうか? (この構文において、返される undef は一体誰が作ってるんでしょう?)