所有输出都被刷新,而所有输入都被缓冲。每个对象都包含自己的输入缓冲区。
粗略地说,是不是我发送的命令被称为输出,结果被称为输入,因为它被缓冲了?
我有以下代码用于发送命令和接收结果。
sub sendCmd {
my $t = shift @_;
my $query = shift @_;
$t->buffer_empty;
print "Sending command $query to telnet target\n";
@out = $t->cmd(String => $query,Timeout => 70,
Errmode => 'return',Prompt => '/#/');
push(@out, ${$t->buffer});
$t->buffer_empty;
return @out;
}
这里的问题是,如果我有以下类型的循环:
while(1)
{
@res1 = sendCmd('cmd1');
print @res1,"\n";
@res2 = sendCmd('cmd2');
print @res2,"\n";
}
这给出了一段时间的预期交替输出,但在那之后:
问题 1:我观察了一段时间后 - cmd1 的结果显示为 cmd2 的结果,反之亦然。
问题 2:命令本身可能会附加到结果中。
请帮我解决这两个问题。同时我正在考虑恢复等待 - 打印组合。
谢谢。