Я новичок в Perl, и мне нужно отредактировать текстовый файл, добавив некоторый текст после того, как я найду ключевое слово (соответствие), мне нужно сохранить изменения в том же файле, но сохранить всю старую информацию, ничего не перезаписывать.
Ключевое слово (совпадение) и информация, которую я хочу добавить, останутся неизменными каждый раз, даже если другие данные из файла изменятся.
To make a summary:
data that will change (not interested)
...
empty spaces < DATA >B506JGHD (< DATA > it would be the keyword(match) and i want to add for example 00000001 after it)
output that I need:empty spaces< DATA >00000001B506JGHD
...
empty spaces< DATA >J6443MNF
output:empty spaces< DATA >00000002J6443MNF
...
empty spaces< DATA >C89583F
output:empty spaces< DATA >00000003C89583F
...
other data (not interested)
и так далее, в файле будет 7 ‹ DATA ›, поэтому я хочу добавить от 00000000 до 00000006 для каждого ‹ DATA ›.
Я ищу простое решение, если оно существует, я знаю, что мне, вероятно, нужно прочитать и просмотреть текстовый файл, найти ключевое слово и переписать все, но я не уверен, как это сделать.
What I tried so far is this:
use strict;
use warnings;
open FILE, "<FL_85E920795_Y060_H21_V001_E.odx" or die $!;
my @lines = < FILE >;
close FILE or die $!;
my $idx = 0;
my $string = '00000000';
do {
if($lines[$idx] =~ /< DATA >/)
{
splice @lines, $idx, 0, $string++;
$idx++;
}
$idx++;
} until($idx >= @lines);
open FILE, ">FL_85E920795_Y060_H21_V001_E.odx" or die $!;
print FILE join("",@lines);
close FILE;
но мне это не очень помогает, так как мой вывод выглядит следующим образом: 00000000 пустых мест ‹ DATA › Информация, если я попытаюсь переместить нужные мне данные перед ‹ DATA ›, он перезапишет все.
Первый ответ, который будет работать для меня, я приму как решение. Большое тебе спасибо