linux - 在 Perl 中调用命令行实例时变量在循环内获取垃圾值

标签 linux perl konsole

do
{
    print"CHOOSE ANY OF THE FOLLOWING OPTIONS:\n";
    print"==========================================\n";
    print"1-LOGIN & LOGOUT\n";
    print"2-MAKE CALL\n";
    print"3-EXIT\n";
    print"==========================================\n";
    print("\nENTER YOUR OPTION: ");
    $option=<>;
    if($option==1)
    {
        print("IN THE LOGIN & LOGOUT SCENARIO\n");
        &Login_logout();
    }
    elsif($option==2)
    {
        print("IN THE MAKE CALL SCENARIO\n");
    }
    elsif($option==3)
    {
        print("\nEXITING...\n");
        exit(0);
    }
    else
    {
        print"\nINSERT A VALID OPTION...!!!\n";
    }
}while(1);

这里子程序 Login_logout() 调用了一个 SIPp 实例(命令行实例)。命令行实例成功完成后,标量 $option 获取一些垃圾值并满足 else 条件并打印行“INSERT A VALID OPTION...!!!”。此过程将无限继续,直到强行关闭 Konsole。

谁能告诉我脚本中哪里错了。

最佳答案

记住 <>采用一行而不是字符串,因此需要删除返回(CR/LF 等)。

...
$option=<>;
chomp $option; ## chomp removes the tailing return
if($option eq '1')
...

关于linux - 在 Perl 中调用命令行实例时变量在循环内获取垃圾值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9223047/

相关文章:

linux - 尝试在 Windows 上使用 bash 并没有收到已安装的发行版消息

linux - 如何在内联汇编中通过 syscall 或 sysenter 调用系统调用?

perl - Perl有哪些好的自然语言解析工具?

shell - 从命令行更改 konsole 选项卡标题并使其持久?

shell - 如何在真彩色或粗体的 ZSH 提示中使用转义序列?

用于 ubuntu 主机的 Android linux 容器

linux - 在日志中提供 Control M 的重定向

regex - 如何使用单行解析需要多个匹配项的 csv 输出?

具有最小值、最大值和默认值的 Perl Moose 属性

c++ - 如何在 Konsole 中转发 `<Ctrl>-<Tab>`?