| Содержание | Предисловие | В |
Глава 18В этой главе:
Преобразование sed-программ в Perl-программы Преобразование shell-сценариев в Perl-программы Упражнение Преобразование других программ в Perl-программыПреобразование awk-программ в Perl-программы Одна из самых замечательных особенностей Perl состоит в том, что он представляет собой семантическое надмножество (как минЕсли у вас єсть а^-программа и вы хотите выполнить ее Perl-вариант, можно осуществить механическое Преобразование зтой программы с помо-щью утилиты а2р, которая єсть в дистрибутиве Perl. Чтобы воспользоваться утилитой а2р, поместите свою aw/^-программу в отдельный файл и вызовите а2р$ cat myawkprog Bb.SIN { sum = 0 ) /llama/ ( sum += $2 ) END { print "The llama count is " sum } $ a2p <myawkprog >myperlprog $ perl myperlprog somefile The llama count is 15 $ Можно также направить стандартний вывод a2p прямо в Perl, потому что интерпретатор Perl принимает программу со стандартного$ a2p <myawkprog I perl - somefile The llama count is 15 $ Преобразованный для использования в Perl aw^-сценарий, как правило, выполняет идентичную функцию, часто с большей скоростью й, конечно, без каких-либо присущих awkВы, возможно, захотите оптимизировать Преобразованный Perl-код или добавить в Perl-версию программы новьге функциональные возможности. Зто сделать довольно просто, поскольку полученный Perl-код читается достаточно легко (учитывая, что пВ некоторых случаях перевод не выполняется механически. Например, сравнение "меньше чем" и для чисел, и для строк в awk выражается операцией <.Преобразование sed-программ в Perl-программыМожет быть, вам покажется, что мы повторяємся, но угадайте, что мы сейчас скажем? А вот что: Perl — семантическое надмножеС дистрибутивом поставляется конвертор sed-РетІ, который называется s2p.Конвертированные 5Єй/-программы могут работать быстрее или медлен-нее оригинала. Как правило, они работают значительно быстрее (благодаря хорошо оптимизированным Perl-программам обработки регулярних виражений).Конвертированный waf-сценарий может работать с опцией -п или без нее. Опция -п имеет тот же смысл, что и соответствующий ключ для sed. Чтобы воспользоваться зтой опциВ качестве примера, демонстрирующего високую универсальность и мощь языка Perl, отметим тот факт, что транслятор s2p написан на Perl. Если вы хотите увидеть, как ЛаррПреобразование shell-сценариев в Perl-программы Вы, наверное, подумали, что речь пойдет о конверторе, осуществляющем Преобразование shell-сценариев в Perl-программы? А вот и нет. Многие спрашивают о такой программе, но проблема в том, что большинство из того, что делает сценарий, делается отнюдь не им самим. Большинство сценариев shell тПозтому лучшее, что вы можете сделать, ~ зто посмотреть на сценарий shell, определить, что он делает, и начать все с нуля, но уже на Perl. Конечно, вы можете провести на скоУпражнение 1. Преобразуйте следующий сценарий shell в Perl-программу: cat /etc/passwd I awk -F: '(print $1, $6(' | while read user home do newsrc="$home/.nevsrc" if [ -r $newsrc ] then if grep -s echo -n "$user is a good person, "; echo "and reads comp.lang.perl.announce!" fi fi done |
| Содержание | Предисловие | В |