【发布时间】:2015-04-01 00:25:23
【问题描述】:
我在 Perl 中有一个名为 data 的散列散列,第一级键是:F、NF 和 S(基本上是 %data={'F' => ..., 'NF' => ..., 'S' => ...})
在我的代码开头,我打开了 3 个输出句柄:
open (my $fh1, ">>", $filename1) or die "cannot open > $filename1: $!";
open (my $fh2, ">>", $filename2) or die "cannot open > $filename2: $!";
open (my $fh3, ">>", $filename3) or die "cannot open > $filename3: $!";
然后,当我的代码运行时,它会填充散列的散列,最后,我想将每个键“F”、“NF”和“S”的散列结果打印到一个单独的文件(由我在开头定义的三个文件句柄标识。)我不太确定如何执行此操作。我尝试了以下方法:就在我打印哈希的foreach 循环之前,我已经定义了
my @file_handles=($fh1, $fh2, $fh3);
my $handle_index=0;
在哈希的每次迭代中,我使用
写入文件print $file_handles[$handle_index] "$stuff\n";
但是,当我尝试运行代码时,它告诉我 string found where operator expected
我的理解是我没有正确地告诉他他应该使用哪个文件句柄。有什么建议吗?
【问题讨论】:
-
在你的哈希分配中,你有一个分号
;,你应该有一个逗号,。 -
好收获;让我纠正一下。
-
您不应该输入您提出问题的代码。像这样的小细节对于分析您的问题非常重要。最好是发送mcve,然后您很可能会在几分钟内得到答复。
-
我似乎能够通过使用存储在数组中的文件句柄来复制您的问题。也许这是不可能的,尽管我可以发誓我以前见过它。您可以使用
$file_handles[$index]->print("$stuff\n")并绕过间接对象表示法。