为什么perl跳过stations而使用while循环
我的perl脚本似乎跳过了if语句,并首先执行while循环。如果我执行while循环,我将获得预期的行为或打印一些文本,然后继续。我没有任何perl经验,所以我想知道这是否是我不知道的语言内部的东西为什么perl跳过stations而使用while循环,perl,scripting,Perl,Scripting,我的perl脚本似乎跳过了if语句,并首先执行while循环。如果我执行while循环,我将获得预期的行为或打印一些文本,然后继续。我没有任何perl经验,所以我想知道这是否是我不知道的语言内部的东西 $choice = <STDIN>; chomp($choice); if($choice == 1) { print 'snap.exe'; @args = ('snap.exe'); } elsif($choice == 2) { print 'v2u.e
$choice = <STDIN>;
chomp($choice);
if($choice == 1)
{
print 'snap.exe';
@args = ('snap.exe');
}
elsif($choice == 2)
{
print 'v2u.exe';
@args = ('v2u.exe');
}
elsif($choice == 3)
{
print 'ImageMagick';
@args = ('import','-depth','8','-window');
}
while(1)
{
#dostuff
}
您所需要做的就是在print语句之前添加$|=1,以强制perl立即输出,而不是缓冲并等待换行
发件人:
句柄->自动刷新EXPR
$OUTPUT\u自动刷新
$|
如果设置为非零,则在当前所选输出通道上的每次写入或打印之后立即强制刷新。无论系统是否真的缓冲了通道,默认值为0;$|只告诉您是否已在每次写入后显式要求Perl刷新。如果输出到终端,则标准输出通常为行缓冲,否则为块缓冲。设置此变量主要在输出到管道或套接字时有用,例如在rsh下运行Perl程序并希望在输出发生时查看输出时。这对输入缓冲没有影响。看看吧。有关如何选择输出通道的信息,请参见。另见
助记符:当你希望你的管道是滚烫的
您所需要做的就是在print语句之前添加$|=1,以强制perl立即输出,而不是缓冲并等待换行
发件人:
句柄->自动刷新EXPR
$OUTPUT\u自动刷新
$|
如果设置为非零,则在当前所选输出通道上的每次写入或打印之后立即强制刷新。无论系统是否真的缓冲了通道,默认值为0;$|只告诉您是否已在每次写入后显式要求Perl刷新。如果输出到终端,则标准输出通常为行缓冲,否则为块缓冲。设置此变量主要在输出到管道或套接字时有用,例如在rsh下运行Perl程序并希望在输出发生时查看输出时。这对输入缓冲没有影响。看看吧。有关如何选择输出通道的信息,请参见。另见
助记符:当你希望你的管道是滚烫的
你确定这不是缓冲的问题吗?如果在整个if-elsif分支前面加上$|=1;,会发生什么;?正在缓冲输出:print snap.exe\n;强迫output@raina77ow抱歉,我的perl知识还不太好,甚至还没有开始了解您在说什么:为什么不在第一个if之前打印$choice,看看您是否拥有您认为拥有的东西?您确定这不是缓冲的问题吗?如果在整个if-elsif分支前面加上$|=1;,会发生什么;?正在缓冲输出:print snap.exe\n;强迫output@raina77ow抱歉,我的perl知识还不太好,甚至还没开始了解您在说什么:为什么不在第一个if之前打印$choice,看看您是否拥有您认为拥有的东西?