“#”我面临的一个问题,对此我不能与下面的子程序就明白了:除非密码包含“#”问题在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