Я написал Perl Script, который обрабатывает два файла, Файл 1 содержит некоторый текст, в котором «ABC» необходимо заменить списком значений, присутствующих во втором текстовом файле.
File1.txt:
Name -> ABC
Record -> Exists
Presence -> Existing_ABC
File2.txt:
John
Claude
Kepler
Shane
Austin
Я хочу заменить 'ABC' из File1 на John, тогда исходный File1 должен быть снова взят, а 'ABC' должен быть заменен на Claude и объединен с первой итерацией и так далее до последней записи File2.
Итак, в настоящее время сценарий выдает выходные данные только для одного значения «Джон», но не принимает другие значения из списка.
Файл Final Output.txt должен выглядеть так:
Name -> John
Record -> Exists
Presence -> Existing_John
Name -> Claude
Record -> Exists
Presence -> Existing_Claude
.
.
.
.
.
(#till Austin)
Пожалуйста, найдите мне ошибку в моем сценарии и заранее спасибо: ->
#!/usr/bin/perl
use strict;
use warnings;
my @blockList = load_block_list();
my $rules_file = 'File1.txt';
my $out_file = 'out.txt';
open( my $rules, '<', $rules_file );
open( my $out, '>', $out_file );
my $Orig_line;
my $new_line;
my $key;
foreach my $Element (@blockList) {
while($Orig_line=<$rules>) {
chomp($Orig_line);
$new_line = $Orig_line;
if($Orig_line =~ m/ABC/) {
$new_line =~ s/ABC/$Element/;
}
print {$out} "$new_line\n";
}
}
sub load_block_list
{
my $block_list = "File2.txt";
open(DAT, $block_list) || die("Could not open file $block_list!");
my @lines=<DAT>;
close(DAT);
my @retVal = ();
foreach my $line (@lines) {
$line =~ s/[\r\n]+//g;
push(@retVal,$line),
}
return @retVal;
}