468x60comp.hardware.ani.


| Содержание | Предисловие | В

Глава 18

    В этой главе:


Преобразование других программ в 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 "'сотр\.lang\.perl\.announce: ' $newsrc then

echo -n "$user is a good person, ";

echo "and reads comp.lang.perl.announce!" fi fi done




|     Назад     | &n

| Содержание | Предисловие | В



Сайт создан в системе uCoz