在循环中重写自身的perl文件
所以我有一个循环,在这里我将值打印到一个文件。唯一的问题是,我只得到循环的最后一次打印。例如,如果这是在我的循环中打印的内容:在循环中重写自身的perl文件,perl,file,for-loop,overwrite,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
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来冲水,但那似乎没有任何作用。我希望以前可能有人碰到过这件事。很抱歉…等的散列。我知道这很混乱:对不起,这不是你问题的答案 要附加文件,请在打开文件时使用>>
open my $f, '>>', 'file.txt';
您的问题是$node\u id设置在上面某处。。。。根据您的预期输出:
1 1
2 2
3 3
如果没有设置$node\u id的代码很难说,但看起来每次增加$node\u id时都会重新打开文件。是否还需要将打开的循环移到外部?是否也可以在标准输出上打印数据,以查看是否确实是文件,而不是错误的数据?是的,我已经打印到STDOUT,并且得到了我首先列出的输出。您是否尝试使用不同的文件名?您没有演示您的问题。提供导致代码出现故障的输入。@AndreyAdamovich,我刚刚做了,它没有改变任何东西。但我不想附加到现有文件,我是第一次创建一个文件。谢谢。就这样。这个循环在另一个循环中太远了,我没有意识到。谢谢!