LINUX.ORG.RU

парсинг файла построчно на perl


0

0

Подскажите, хочу заменить построчно в файле слова one на two глобально

-------------------------------------------------------------------
my $tmp = "tmp.txt";
open(TMP, ">$tmp") || die ("\nНе могу открыть файл $tmp, проверьте права доступа к ./ каталогу\n");
my $line = <TMP>;
$line = readline(*TMP);
$line =~ s/one/two/g ;
-------------------------------------------------------------------

после смотрю в файл - а он без изменений,
где я ошибся и как лучше решать такие задачи ?

Благодарен тем, кто ответит...

anonymous

потому что ты файл открываешь, что то меняешь, но измененные данные не записываешь обратно в файл.

яб так сделал:

$/=undef;
open F,"<file.txt" or die "cant open: $!";
$f=<F>;
close F;
$f=s!one!two!igs;
open F, ">file_new.txt";
print F $f;
close F;

или так

[vilfred@observ vilfred]$ perl -i -n -p -e 's!one!two!gs' file.txt

vilfred ☆☆
()

aяб так сделал ;)

perl -pi.backup -e 's/one/two/g'

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.