傳回附加至 FILEHANDLE 的輸入檔案中的下一個字元,或是在檔案結尾或是有錯誤時傳回未定義的值(後者會設定 $!
)。如果省略 FILEHANDLE,會從 STDIN 讀取。這並不特別有效率。不過,它無法自行用於擷取單一字元而不等使用者按下 Enter。對於這種情況,請嘗試更類似下列的作法
if ($BSD_STYLE) {
system "stty cbreak </dev/tty >/dev/tty 2>&1";
}
else {
system "stty", '-icanon', 'eol', "\001";
}
my $key = getc(STDIN);
if ($BSD_STYLE) {
system "stty -cbreak </dev/tty >/dev/tty 2>&1";
}
else {
system 'stty', 'icanon', 'eol', '^@'; # ASCII NUL
}
print "\n";
是否應設定 $BSD_STYLE
的判定留待讀者練習。
POSIX::getattr
函式可以在宣稱符合 POSIX 的系統上更具可移植性地執行此動作。另請參閱 CPAN 上的 Term::ReadKey
模組。