我是新的Perl和學習它。我寫了一個腳本,按bash提供的方式提供按字母自動完成的腳本。如果輸入不在定義的數組中,它將輸出預定義的消息,並且如果輸入在數組中,則它將同樣運行系統命令。與正則表達式得到奇怪的錯誤'[
它運行良好,根據我的假設,但如果我只輸入[字符,它給出錯誤,我找不到它爲什麼發生。
還有一件事,假設我只鍵入沒有任何字符的tab,它不會在array中顯示預定義的命令,它只會提示。
請引導我,如果我錯了,請糾正我。
在我使用bash shell腳本之前,我們有-x選項可以在運行時進行調試,Perl有沒有這樣的選項?
我的腳本:
#!/usr/bin/perl
use Term::Complete;
use List::Util 'first';
@cmd = qw/ls uptime clear/;
while (defined @cmd) {
$in = Complete('prompt', @cmd);
if (first { /$in/ } @cmd) {
system($in);
}
elsif ($in eq 'exit') {
`kill -9 $$`;
}
else {
print "Use these commands: ls uptime clear";
}
}
錯誤,如果我輸入[:
perl tab1.pl
prompt uptime
12:02:31 up 3:29, 2 users, load average: 0.00, 0.00, 0.00
prompt [
Unmatched [ in regex; marked by <-- HERE in m/[ <-- HERE/at tab1.pl line 8.
BR 本
是的,現在解決了。但有一點是剩餘的「還有一件事,假設我只鍵入沒有任何字符的選項卡,它不顯示數組中的預定義命令,它只會提示。」 – Ben
@Ben這是一個單獨的問題'Term :: Complete' –
好的,我應該提出一個相同的新問題還是? – Ben