+>>
не делает то, что вы думаете, что делает.На самом деле, в тестировании, похоже, ничего не происходит.Кроме того, +<
делает что-то очень странное:
% cat file.txt
1,a,USA,,
2,b,UK,,
3,c,USA,,
% cat update.pl
#!perl
use strict;
use warnings;
open my $fh, '+<', 'file.txt' or die "$!";
while ( my $line = <$fh> ) {
$line .= "hello\n";
print $fh $line;
}
% perl update.pl
% cat file.txt
1,a,USA,,
1,a,USA,,
hello
,,
,,
hello
%
+>
, кажется, усекает файл.
На самом деле, вы хотите записать в новый файл, затемскопируйте этот файл поверх старого.Открытие файла для одновременного чтения / записи выглядит так, как будто вы попадаете в мир боли.
В качестве отступления следует использовать форму с тремя аргументами open()
(безопаснее для "странных" имен файлов)и используйте лексические файловые дескрипторы (они не являются глобальными, и когда они выходят за пределы вашей области, ваш файл автоматически закрывается для вас).