perl - 如何写入存储在数组中的 Perl 文件句柄?

标签 perl filehandle

我有一个文件名列表。我必须为每个名称创建一个文件,将行写入各种文件(无特定顺序),然​​后关闭它们。

我怎么能在 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/

相关文章:

perl - 间歇性地第一次迭代失败但第二次迭代通过

perl - 合并列表列表的列表

arrays - 试图理解困难的 Perl 语法 : array and empty square braces

Java 文件句柄不会关闭

perl - 是否有一个 perl 模块可以启动一个进程并将三个主要 I/O 句柄返回给该进程?

perl - 在 Perl 中将文件读入变量

perl - 如何修复 Perl 模块 Makefile 中的 "Execution of -e aborted due to compilation errors"?

perl - 如何有效地对 Moose 属性应用正则表达式替换?

python - pythons tar 文件是否完成添加的文件,或者等到其关闭?

python - 如何将 1 个字节写入二进制文件?