我使用Term :: ReadLine,並且有一個奇怪的問題,我需要點擊向上箭頭兩次才能從addhistory檢索項目。這是我正在使用的腳本。Term :: ReadLine - 我需要點擊向上箭頭兩次檢索歷史
use Term::ReadLine;
my $term = Term::ReadLine->new('Term1');
print $term->ReadLine."\n";
while (defined(my $cmd = $term->readline())) {
$term->addhistory($cmd) if $cmd =~ /\S/;
}
爲了測試,我會輸入一些「命令」,然後嘗試用向上箭頭檢索這些命令。我打了一次向上箭頭,最後一個項目立即出現,但是我需要在檢索每個後續項目之前按兩次向上箭頭。
我之前在一個正在處理的小項目中遇到過這個問題,並且遇到了一個具有相同問題的人。在解決這一問題的addhistory行修改如下:
$term->addhistory($cmd) if $cmd !~ /\S||\n/;
它的工作讓我感動,直到Tanktalus在另一個問題我貼提出這。 Perl Term::ReadLine::Gnu Signal Handling Difficulties
他問「什麼是/ \ S || \ n /應該做什麼?」。好吧,讓我去找到那個網頁,這表明這是一個修復...是的...找不到它。所以,雖然我可以使它與我發佈的修改一起工作,但自A以來我有點卡住了。我不知道它爲什麼修復它,以及B.爲什麼我似乎是唯一一個遇到此問題的人?
任何幫助或建議,將不勝感激! :)
測試上面的腳本與以下版本:
Perl - 5.12.4 and 5.16.1
Term::ReadLine::Gnu - 1.20
Term::ReadLine::Perl - 1.0303 (Just tried it to make sure it wasn't Gnu)
Term::ReadLine - 1.10
你正在使用什麼樣的終端,以及TERM設置的環境變量是什麼? – ysth