Debian で実行しているスクリプトからユーザー入力を読み取っているときに、Enter/Return キーを押した後ではなく、Ctrl-D を押した後にのみユーザー入力が終了することがわかりました。
my $userchoice = <>;
私のスクリプトでは、ユーザーがテキストを入力し、Return/Enter キーで終了する必要があります。私のスクリプトでこれを引き起こしている可能性があるのは何ですか?
スクリプトの早い段階で丸呑みモードを設定すると、これに関連する可能性がありますか?
perdoc を見ましたが、そこに説明が見つかりませんでした。
sub InteractiveMenu {
for my $key(0 .. $#desclist) {
my $value = $desclist[$key];
printf (" %-3s %-20s -> %-15s -> %-30s\n", $key, $desclist[$key], $iplist[$key], $filelist[$key] );
}
print "\nAvailable choices:\n";
printf " (R)oot key installation [installs your public key to remote servers]\n";
printf " (S)etup remote logging [sets up user account on remotes]\n\n";
print "Choose a server to work on:\n";
chomp(my $userchoice = <>);
}
sub ListRemotes {
print "Listing remote servers from $Confile\n";
open my $ReadHandle, "<", $Confile or die $!;
local $/; # enable localized slurp mode
chomp(my $content = <$ReadHandle>);
close $ReadHandle;
my @values = split('zone ', $content);
foreach my $val (@values) {
#print $val."\n-------------------------\n";
&ListWorker($val);
}
InteractiveMenu();
}