我想检查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"
这是我的代码片段中的第二个日志.
任何建议都非常感谢.
干杯,
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" );
}