добавить текст в верхней части файла

Я хочу добавить текст в верхней части моих данных.txt файл, этот код добавить текст в конец файла. как я могу изменить этот код, чтобы написать текст поверх моих данных.txt-файл. заранее спасибо за любую помощь.

open (MYFILE, '>>data.txt');
print MYFILE "Titlen";
close (MYFILE)

6 ответов


 perl -pi -e 'print "Title\n" if $. == 1' data.text

синтаксис слегка 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 файл усекается.


посмотреть Perl FAQ запись на эту тему


perl-ni-e 'печать" Title\n"$.==1 ' filename, это напечатать ответ один раз