我有一个文件名列表。我必须为每个名称创建一个文件,将行写入各种文件(无特定顺序),然后关闭它们。
我怎么能在 perl 中做到这一点?我设想了类似以下代码的内容(它不会以这种形式工作并给出语法错误):
my @names = qw(foo.txt bar.txt baz.txt);
my @handles;
foreach(@names){
my $handle;
open($handle, $_);
push @handles, $handle;
}
# according to input etc.:
print $handles[2] "wassup";
print $handles[0] "hello";
print $handles[1] "world";
print $handles[0] "...";
foreach(@handles){
close $_;
}
我怎样才能正确地做到这一点?
最佳答案
print
的文件句柄参数必须是一个裸字、一个简单的标量或一个块。
所以:
print { $handles[0] } ...
这在 perldoc -f print 中有解释.
同样的限制适用于 indirect object syntax通常,以及确定 <> 何时是 readline 操作,而不是 glob 操作。
关于perl - 如何写入存储在数组中的 Perl 文件句柄?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/968035/