$number=&input;
print "$number\n";
# 入力サブルーチン
sub input {
my $number;
my $n0,$n1,$n2;
while () { # 無限ループ
print "1-9の数字を重複なしに組み合わせた3桁の数字を入力してください。";
$number=<stdin>;
chomp($number);
if ($number>=123 && $number<=987) { # 数字チェック
return $number;
}
print "入力が正しくありません。\n";
}
}
桁の数は「求めたい桁の一つ上の桁の数で割った余り」を「求めたい桁の数で割った商」で求まります。例えば、十の桁の数は「(元の数%100)/10」で計算します。
$number=&input;
print "$number\n";
# 入力サブルーチン
sub input {
my $number;
my $n0,$n1,$n2;
while () { # 無限ループ
print "1-9の数字を重複なしに組み合わせた3桁の数字を入力してください。";
$number=<stdin>;
chomp($number);
if ($number>=123 && $number<=987) { # 数字チェック
$n0=int($number/100); # 百の桁
$n1=int(($number%100)/10); # 十の桁
$n2=$number%10; # 一の桁
if ($n0!=$n1 && $n1!=$n2 && $n2!=$n0 && $n0*$n1*$n2!=0) {# 重複&非零チェック
return $number;
}
}
print "入力が正しくありません。\n";
}
}
ここでは3桁なので各桁を個別に求めていますが、任意の桁の数のときには繰り返しを使って求めます。