以下のサブルーチンでは理解できない問題に直面しています。
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自体に問題があると思います。助けていただけますか?