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/