perl文件在循环中覆盖自身

时间:2012-11-08 07:57:16

标签: perl file for-loop overwrite

所以我有一个循环,我将值打印到文件。唯一的问题是,我只得到循环的最后一个打印。例如,如果这是我的循环中打印的内容:

1 1
2 2 
3 3

我的所有文件都将3 3作为第一个也是唯一的一行。这是我的代码:

open my $f, '>', 'file.txt';

#$node_id set above somewhere...
for my $key (keys %{$todo->{$node_id}->{'urls_hash'}}) { 
    print $f "$node_id $todo->{$node_id}->{'urls_hash'}->{$key}->{'domain_id'}\n";
}

close $f;

我尝试使用$| = 1进行刷新,但似乎没有做任何事情。我希望也许有人之前遇到过这种情况。抱歉等等哈希的哈希。我知道它很乱:)

2 个答案:

答案 0 :(得分:2)

您的问题是#$node_id set above somewhere...。从您的预期输出:

1 1
2 2 
3 3

如果没有设置$node_id的代码,很难说,但每次增加$node_id时,您似乎都在重新打开文件。你需要另外一个循环来移动open吗?

答案 1 :(得分:1)

这不是你问题的答案,抱歉。

要附加文件,请使用>>打开文件时。

open my $f, '>>', 'file.txt';