所以我有一个循环,我将值打印到文件。唯一的问题是,我只得到循环的最后一个打印。例如,如果这是我的循环中打印的内容:
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
进行刷新,但似乎没有做任何事情。我希望也许有人之前遇到过这种情况。抱歉等等哈希的哈希。我知道它很乱:)
答案 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';