我在模拟一段涉及perl
中的Expect :: expect函数的代码时陷入困境它是这样的:
my $result = 0;
my $exp = new Expect;
$exp->raw_pty(1);
$exp->log_stdout(0);
$exp->spawn("$some_command");
$exp->expect(undef,
[ qr/some text/i,
sub { my $self = shift;
$self->send("$a_param\n");
exp_continue;
} ],
[ qr/more text/,
sub { my $self = shift;
$self->send("$another_param");
sleep 5;
exp_continue;
} ],
[ qr/some more text/ ,
sub { my $self = shift;
$ld_info = "$something";
$self->clear_accum();
$self->send($ld_info);
sleep 5;
exp_continue;
} ],
[ qr/further more text/,
sub { my $self = shift;
$result = 1;
} ],
);
return $result;}
$ result的值是最终返回值。在模拟时我打算将result的值设置为1而不实际运行命令然后尝试匹配模式。有没有办法做到这一点?
答案 0 :(得分:0)
你可以使用
来做到这一点local *
使用您自己的代码替换代码的实现。 它实际上取决于函数的调用方式,但我认为你可以使用类似的东西:
local *Expect::expect = sub
{
return 1;
}