「#」我面臨的一個問題,對此我不能與下面的子程序就明白了:除非密碼包含「#」問題在Perl中
sub password()
{
$StdIn = new Win32::Console(STD_INPUT_HANDLE);
my $Password = "";
$StdIn->Mode(ENABLE_PROCESSED_INPUT);
print "Enter Password: ";
while (ord(my $Data = $StdIn->InputChar(1)) !=10)
{
if("\r" eq $Data)
{
last;
}
elsif ("\ch" eq $Data)
{
if("" ne chop($Password))
{
print "\ch \ch";
}
next;
}
$Password .=$Data;
print "*";
}
return $Password;
}
以上腳本的正常工作與一切。如果它包含「#」 調用上述子例程的主子例程不能與該工具連接,那我需要自動化。雖然該工具與#
—沒有問題,但「手動使用它時可以正常工作」。所以我認爲Perl本身存在一些問題。你能幫忙嗎?
當您使用'#'時會出現什麼錯誤 – Anil 2012-04-13 09:14:54
我沒有收到任何錯誤,但腳本沒有與需要自動執行的工具連接。 – 2012-04-13 09:15:46
你有沒有資源泄漏,因爲你的'$ StdIn'不是'my'變量?你是否也需要關閉'$ Stdin'?這將是很好的解決不穩定的縮進。你只是因爲使用''ch''讓我去查看Perl文檔來發現這是一種表示控制字符的方式,所以你使用'\ ch'作爲一種長期的方式寫'\ b',就像你使用'10'來識別'\ r'(所以你的循環測試可能是多餘的)。 – 2012-04-13 09:39:24