Например, можно воспроизвести сценарий Perl для обработки необходимых файлов и запустить его с опциями –p и –n, организующими цикл по файлам, а также задать необходимый набор действий для каждой из строк файла в опции –e. Все это гарантирует быстроту решения задачи.
Итак, нам необходимо изменить значения ключа «key!» на велечину, равную 5, в файлах конфигурации configl, config2 и configS, которые содержат строки вида ключ = ЗНАЧЕНИЕ. Данная задача решается следующим вызовом Perl из командной строки:
perl -p -i.bak -e"m/ (\w+)\s*=\s*(.+)/i;
if($1 eq V'KeylV){$_ = \"$1 = 5\n\";};" configl config2 configS
Поясним строку вызова интерпретатора Perl.
Опции –p и –i используются для обработки содержимого файлов конфигурации по месту в неявном цикле с печатью. С помощью опции –e задается код модификации содержимого файлов, который является достаточно простым. На содержание подстроки ключ =ЗНАЧЕНИЕ проверяется строка файла, заданная при помощи специальной переменной Perl $_. В регулярном выражении различают две группы. Одна из них соответствует ключу, а вторая – его значению. Этим средством мы сохраняем значение и имя ключа в в специальных переменных $1 и $2. При этом, вторым оператором кода, в том случае, если имя ключа совпадает с заданным, заносится новое значение ключа (кеу! = 5) в переменную $_ строку.
Этот сценарий выполняется следующим образом: создается копия файла configl.bak и новый пустой файл configl. Из файла-копии в переменную $_ последовательно считываются строки, а в переменную $1 непосредственно заносится имя ключа. В том случае, если имя ключа = «Key!», то в $_ формируется строка с заданием для нового ключа. Перед процедурой чтения следующей строки файла configl.bak в configl, происходит запись содержимого переменной $_. В результате эти действий формируются конфигурационные файлы с значением ключа Key! равным 5.
Для анализа содержимого файла весьма полезна опция –p. Команда perl -p -е"1" prog.pl отобразит на экране содержимое файла prog.pl:
Вызов perl -p -e "s/\s*.+\s(.+)\s*/$l\n/;"test.dat выводит на экран монитора последний столбец данных их test.dat, где элементы всех столбцов в строке разделены пробелами.
Таким образом, не прибегая к написанию больших файлов, решается достаточно большое количество задач с кодом Perl.
| Микронаушники Не грузись! Наши микронаушники, от фирмы Micro-Stereo, помогут с учёбой. www.micro-stereo.ru |