如何一次打印成两个文件?
我无法让这行代码正常工作:
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”错误,因为我使用的是 strict
。我还注意到他们在示例中缺少 ;
,所以我猜测除此之外可能还有更多错误。
一次打印到两个文件的正确语法是什么?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
你还没有打开这些文件。
请注意,我没有使用裸词。在过去,您可能会使用:
但现代的方法是前者。
You haven't opened the files.
Notice that I'm not using barewords. In the olden days, you would have used:
but the modern approach is the former.
我只会使用 IO::Tee。
运行上述程序会产生:
file1
file2
我建议阅读整个 perldoc 文件更高级的用法。
I would just use IO::Tee.
Running the above program results in:
file1
file2
I would recommend reading the whole perldoc file for more advanced usage.
看起来不错,只是以前在 Perl 中使用裸字作为文件句柄很常见,但现在建议使用普通标量。
因此,请确保您确实打开了文件,然后只需将
(fh1, fh2)
部分替换为实际的文件句柄(即($fh1, $fh2)
> 或者什么)That looks about right, it's just that it used to be common in Perl to use barewords as file handles, but nowadays it's recommended to use normal scalars.
So make sure that you actually have the files open, then just substitute the
(fh1, fh2)
part with the actual file handles (which would be($fh1, $fh2)
or something)另一个版本基于布莱恩的回答:
another version based off of Brian's answer:
您首先需要打开文件以获得有效的文件句柄
You first need to open the file in order to get valid filehandles