如何以编程方式生成多个Perl文件句柄?

时间:2010-01-10 17:13:23

标签: perl filehandle

Perl有没有办法以编程方式生成文件句柄?

我想同时打开十个文件并使用包含(CONST NAME + NUMBER)的文件句柄写入它们。例如:

 print const_name4  "data.."; #Then print the datat to file #4

3 个答案:

答案 0 :(得分:9)

您可以将文件句柄直接插入未初始化的阵列插槽中。

my @handles;
for my $number (0 .. 9) {
    open $handles[$number], '>', "data$number";
}

不要忘记打印到数组句柄的语法略有不同:

print $handles[3] $data;    # syntax error
print {$handles[3]} $data;  # you need braces like this

答案 1 :(得分:5)

有点IO::Filemap你也可以这样做:

use IO::File;

my @files = map { IO::File->new( "file$_", 'w' ) } 0..9;

$files[2]->print( "writing to third file (file2)\n" );

答案 2 :(得分:3)

现在你可以为标量分配文件句柄(而不是使用表达式(如你的例子)),所以你可以创建一个数组并用它们填充它。

my @list_of_file_handles;
foreach my $filename (1..10) {
    open my $fh, '>', '/path/to/' . $filename;
    push $list_of_file_handles, $fh;
}

当然,您可以使用variable variables,但它们是一种令人讨厌的方法,我从未见过使用数组或散列的时间不是更好的选择。