Обнаружение портала неволи, реализация всплывающего окна?

Начал писать это как комментарий, но получилось слишком сложно, поэтому второй ответ на perl. Учитывая ваш исходный файл, вы можете использовать аккуратный трюк perl для построения regex:

#!/usr/bin/env perl

use strict;
use warnings; 
use Data::Dumper;

#build key-value pairs
my %replace = map { /"(.+)"\s*:\s*"(.+)"/ } <DATA>;
print Dumper \%replace; 

#take the keys of your hash, then build into capturing regex
my $search = join ( "|", map {quotemeta} keys %replace ); 
$search = qr/($search)/;

print "Using match regex of: $search\n";

#read stdin or files on command line, line by line
while ( <> ) { 
    #match regex repeatedly, replace with contents of hash. 
    s/$search/$replace{$1}/g;
    print;
}

__DATA__
"yes"      : "no"
"stop"     : "go, go, go!"
"wee-ooo"  : "ooooh nooo!"
"gooodbye" : "hello"

"high"     : "low"
"why?"     : "i don't know"

Мы генерируем хэш, используя многострочное совпадение шаблонов и map для создания пар ключ-значение.

Мы создаем поисковый regex и используем полученные в нем значения для замены.

Использование <> - магического файлового интерфейса perl - STDIN или файлов, указанных в командной строке. Примерно так же, как это делает sed. (Вы можете использовать файл и читать его "нормально" для получения шаблона, использование DATA чисто иллюстративное).

5
23.07.2018, 22:50
0 ответов

Теги

Похожие вопросы