добавить текст в верхней части файла
Я хочу добавить текст в верхней части моих данных.txt файл, этот код добавить текст в конец файла. как я могу изменить этот код, чтобы написать текст поверх моих данных.txt-файл. заранее спасибо за любую помощь.
open (MYFILE, '>>data.txt');
print MYFILE "Titlen";
close (MYFILE)
6 ответов
синтаксис слегка off устаревший (спасибо, сет):
open(MYFILE, '>>', "data.txt") or die $!;
вам придется сделать полный проход через файл и записать нужные данные перед существующим содержимым файла:
open my $in, '<', $file or die "Can't read old file: $!";
open my $out, '>', "$file.new" or die "Can't write new file: $!";
print $out "# Add this line to the top\n"; # <--- HERE'S THE MAGIC
while( <$in> ) {
print $out $_;
}
close $out;
close $in;
unlink($file);
rename("$file.new", $file);
(безвозмездно, похищенных из Perl FAQ, затем изменен)
это будет обрабатывать файл строка за строкой, так что на больших файлах вы не жевать тонну памяти. Но это не совсем быстро.
надеюсь, что помогает.
существует гораздо более простой однострочный текст для добавления блока текста в каждый файл. Предположим, у вас есть набор файлов с именем body1, body2, body3 и т. д., к которому вы хотите добавить блок текста, содержащийся в файле с именем заголовок:
cat header | perl -0 -i -pe 'BEGIN {$h = <STDIN>}; print $h' body*
добавление к началу обычно называется добавлением.
open(M,"<","data.txt");
@m = <M>;
close(M);
open(M,">","data.txt");
print M "foo\n";
print M @m;
close(M);
попеременно открывать данные.txt - для записи, а затем перемещения данных.txt-к данным.txt после закрытия, который имеет преимущество быть атомарным, поэтому прерывания не могут оставить данные.txt файл усекается.