当前位置:  开发笔记 > 编程语言 > 正文

如何使用块作为'或'子句而不是简单的模具?

如何解决《如何使用块作为'或'子句而不是简单的模具?》经验,为你挑选了1个好方法。

我想检查Net :: FTP Perl模块中的操作结果而不是死.

通常你会这样做:

$ftp->put($my_file)
  or die "Couldn't upload file";

但是我想做其他事情,而不是仅仅死在这个脚本中,所以我尝试了:

$ftp->put($my_file)
  or {
      log("Couldn't upload $my_file");
      return(-1);
  }

log("$my_file uploaded");

但是Perl抱怨编译错误说:

syntax error at toto.pl line nnn, near "log"

这是我的代码片段中的第二个日志.

任何建议都非常感谢.

干杯,



1> Axeman..:

do 正是你要找的:

$ftp->put($my_file)
  or do {
      log("Couldn't upload $my_file");
      return(-1);
  };

log("$my_file uploaded");

但是,可能是更好的风格:

unless( $ftp->put( $my_file )) { # OR if ( !$ftp->put...
      log("Couldn't upload $my_file");
      return(-1);
}

如果你只是想返回错误条件,那么你就可以die和使用eval在调用FUNC.

use English qw<$EVAL_ERROR>; # Thus, $@ <-> $EVAL_ERROR

eval { 
    put_a_file( $ftp, $file_name );
    handle_file_put();
};

if ( $EVAL_ERROR ) { 
    log( $EVAL_ERROR );
    handle_file_not_put();
}

然后打电话

sub put_a_file { 
    my ( $ftp, $my_file ) = @_;
    $ftp->put( $my_file ) or die "Couldn't upload $my_file!";
    log( "$my_file uploaded" );

}

推荐阅读
php
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有