我想使用命名参数将词法文件句柄传递给子例程,但以下内容不能编译:
#!/usr/bin/perl -w use strict; my $log_fh; my $logname = "my.log"; sub primitive { my ($fh,$m) = @_; print $fh $m; } sub sophisticated { my ($args) = @_; print $args->{m}; print $args->{fh} $args->{m} ; } open $log_fh,">",$logname; print $log_fh "Today I learned ...\n"; primitive($log_fh,"... the old way works ...\n"); sophisticated({ fh=>$log_fh,m=>"... and the new way requires an intervention by SO.",}); close $log_fh;
投诉是:
Scalar found where operator expected at ./lexical.file.handle.pl line 15,near } $args" (Missing operator before $args?) $perl --version This is perl,v5.10.1
它适用于O.K.当我使用传递参数的原始技术时,命名参数哈希技术适用于消息部分,而不是文件句柄部分.我需要新版本的打印吗?