Как добавить в начало или конец файла в Perl?

Каков наилучший способ записи некоторого содержимого в начало и конец файла в Perl

Ответ 1

Добавление тривиально:

open my $fh, '>>', 'some.file' or die "Cannot open file for append: $!\n";
print $fh $some_content;
close $fh;

С другой стороны, добавление чего-то в начале (или в середине) очень сложно.

Один из способов сделать это:

use File::Temp qw/ tempfile /;
use File::Copy;

open my $in, '<', 'some.file' or die "Cannot open file for reading: $!\n";

my ($out, $temp_file_name) = tempfile();

print $out $some_content;
my $l;
print $out $l while defined( $l = <$in> );

close $in;
close $out;

move( $temp_file_name, 'some.file' );

Ответ 2

Это охватывается FAQ

Ответ 3

Следующий код - самый простой пример, который я могу придумать.

#!/usr/local/bin/perl
open (MYFILE, '>>data.txt');
print MYFILE "Bob\n";
close (MYFILE);

" → " сообщает открытой функции, которую вы хотите отредактировать, помещая символы в конец.

Замените это на " > ", чтобы заменить содержимое.

Чтобы разместить содержимое в начале файла - я предлагаю прочитать в файле, вручную помещая содержимое при попрошайке массива char, а затем записывая в файл с помощью " > "

Ответ 4

Используйте модуль Tie:: File, и это можно сделать легко, хотя это может быть не самый эффективный способ. Вы можете редактировать файл так же, как если бы он был массивом perl, поэтому, чтобы добавить строку в начало, вы должны использовать unshift() и добавить строку в конец, вы можете использовать push(). Документация модулей довольно понятна, как ее использовать.

Ответ 5

Вы ищете систему шаблонов ?