すいません、掲示板などを作る時、ユーザに変数の内容を
決めて貰い後で参照しますが、その際「定義されていない or
空か無効」と「正常」を区別するスマートなやり方ありませんか?

# ユーザの設定
package user;
$file = 'bbs.cgi';

# プログラム
package main;
my $file = (defined($user::file) && $user::file)
 ? $user::file : 'bbs.cgi';

これだと何度も $user::file をタイプしないといけないので
なんか無駄に文が長くなってしまうような気がします。
なんとなく perl -w で文句を言われるのも嫌なので
my $file = $user::file || 'bbs.cgi';
のような記述も避けたいのですが・・・・。