我想使用命名参数将词法文件句柄传递给子例程,但以下内容不能编译:
- #!/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.当我使用传递参数的原始技术时,命名参数哈希技术适用于消息部分,而不是文件句柄部分.我需要新版本的打印吗?