首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >perl中的"#“问题

perl中的"#“问题
EN

Stack Overflow用户
提问于 2012-04-13 17:11:31
回答 2查看 122关注 0票数 1

我面临着一个我无法理解的问题,下面的子例程:

代码语言:javascript
运行
复制
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本身存在一些问题。你能帮帮忙吗?

EN

回答 2

Stack Overflow用户

发布于 2012-04-13 19:30:10

首先,使用Term::Prompt而不是自己摆弄控制台。

代码语言:javascript
运行
复制
#!/usr/bin/env perl

use strict; use warnings;
use Term::Prompt;

my $pass = prompt P => 'Password: ', undef, undef;
print "$pass\n";

至于你的问题,我假设问题出在你没有表现出来的那一部分。但是,请注意

在输入密码之前,您要打印的字符和rather than indirect object syntax.

  • Do use warnings.

  • The strict *字符不会出现。如果您坚持用Perl语言编写C语言,请在while之前使用local $| = 1
票数 3
EN

Stack Overflow用户

发布于 2012-04-13 17:40:20

你有没有试着显示输入?只需编写print $Data;,看看它是否接受输入。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10138141

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档