我无法让这行代码工作:
for my $fh (FH1,FH2,FH3) { print $fh "whatever\n" }
我在perldoc找到它但它对我不起作用.
我到目前为止的代码是:
my $archive_dir = '/some/cheesy/dir/'; my ($stat_file,$stat_file2) = ($archive_dir."file1.txt",$archive_dir."file2.txt"); my ($fh1,$fh2); for my $fh (fh1,fh2) { print $fh "whatever\n"; }
我在(fh1,fh2)部分出现“Bareword”错误,因为我使用严格.我也注意到他们错过了一个;在这个例子中,所以我猜可能会有更多的错误.
一次打印到两个文件的正确语法是什么?
解决方法
您尚未打开文件.
my ($fh1,$fh2); open($fh1,">",$stat_file) or die "Couldn't open $stat_file: $!"; open($fh2,$stat_file2) or die "Couldn't open $stat_file2: $!"; for my $fh ($fh1,$fh2) { print $fh "whatever\n"; }
请注意,我没有使用裸字.在过去,你会使用:
open(FH1,">$stat_file"); ... for my $fh (FH1,FH2) { print $fh "whatever\n"; }
但现代的方法是前者.