Perl有没有办法以编程方式生成文件句柄?
我想同时打开十个文件并使用包含(CONST NAME + NUMBER)的文件句柄写入它们。例如:
print const_name4 "data.."; #Then print the datat to file #4
答案 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)
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,但它们是一种令人讨厌的方法,我从未见过使用数组或散列的时间不是更好的选择。