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

我如何在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 $_;
}

我该怎么做呢?

最佳答案

这是我的操作方式(未经测试,但我敢肯定这是件好事):

use IO::File;

# ...
my @handles = map { IO::File->new($_, 'w') } @names;

$handles[2]->print("wassup");
# ...

它是OO,具有更清晰的界面,您不必担心关闭它们,因为当数组超出范围时它将消失。

10-07 15:04