为什么我的代码不能正常的返回?

为什么我的代码不能正常的返回?

代码如下:
.....
$exp->expect(10, [qr/^Login:/i, sub { my $self = shift;
                                                 $self->send("root\n");}],
                       [qr/Trying 10.5.0.60.../, sub { return -1;}]);
......

如果我将return -1改为exit -1,整个程序就退出了,而不是子函数退出。
但是用return后面的代码还是在继续执行,这是什么原因呢?
不是很理解……
eval {die...}; #?
exit是整个程序都over了
那有没有什么方法只结束当前的函数呢?
要么使用goto,要么跳到别的函数去
[qr/Trying 10.5.0.60.../, sub { return -1;}]);
这行不对.....
sub {} 是给匹配到 [Trying 10.5.0.60...]时..去做的动作...
你的动作应该是在sub{} 里面设定一个
$exit_flag = 1;
exp_continue;

然後在expect 下面...用perl的语法...
if( $exit_flag ==-1){
  $exp->hard_close();
   return;
}