wantarray 関数を使うと、そのサブルーチンがリストコンテキストで呼び出されたかどうかを調べることができます。
wantarray
sub hoge { return wantarray ? (100, 200, 300) : 3; }