П О Р Т А Л                            
С Е Т Е В Ы Х                          
П Р О Е К Т О В                        
  
Поиск по сайту:
                                                 
Главная

О проекте

Web-мастеру
     HTML & JavaScript
     SSI
     Perl
     PHP
     XML & XSLT
     Unix Shell

MySQL

Безопасность

Хостинг

Другое








Самое читаемое:

Учебник PHP - "Для Чайника".
Просмотров 178248 раз(а).

Иллюстрированный самоучитель по созданию сайтов.
Просмотров 75718 раз(а).

Учебник HTML.
Просмотров 74158 раз(а).

Руководство по PHP5.
Просмотров 45099 раз(а).

Хостинг через призму DNS.
Просмотров 52045 раз(а).

Подборка текстов стандартных документов.
Просмотров 45182 раз(а).

Учебник PHP - Самоучитель
Просмотров 51421 раз(а).

Документация на MySQL (учебник & справочное руководство)
Просмотров 51879 раз(а).

Внешние атаки...
Просмотров 41995 раз(а).

Учебник PHP.
Просмотров 37352 раз(а).

SSI в примерах.
Просмотров 27885 раз(а).



 
 
| Добавить в избранное | Сделать стартовой | Помощь





Глава 18: Преобразование других программ в Perl-программы
18.1 Преобразование awk-программ в Perl-программы

Одна из самых замечательных особенностей Perl состоит в том, что он представляет собой семантическое надмножество (как минимум) языка awk. С практической точки зрения это значит, что если вы можете сделать что-либо в awk, вы сможете сделать это и в Perl. При этом, однако, Perl не обладает синтаксической совместимостью с awk. Например, переменная NR (номер входной записи) awk представляется в Perl как $.

Если у вас есть аwk-программа и вы хотите выполнить ее Perl-вариант, можно осуществить механическое Преобразование этой программы с помощью утилиты а2р, которая есть в дистрибутиве Perl. эта утилита конвертирует синтаксис awk в синтаксис Perl и может создать непосредственно выполняемый Perl-сценарий для подавляющего большинства awk-программ.

Чтобы воспользоваться утилитой а2р, поместите свою awk-программу в отдельный файл и вызовите а2р с именем этого файла в качестве аргумента или переадресуйте стандартный ввод а2р на ввод из этого файла. В результате на стандартном выводе а2р вы получите нормальную Perl-программу. Например:

$ 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 awk-сценарий, как правило, выполняет идентичную функцию, часто с большей скоростьюй, конечно, без каких-либо присущих awk ограничений на длину строки, количество параметров и т.д. Некоторые преобразованные Perl-программы могут выпол-няться медленнее; Perl-действие, зквивалентное данной awk-операции, не обязательно будет самым эффективным Perl-кодом, по сравнению с написанным вручную.

Вы, возможно, захотите оптимизировать Преобразованный Perl-код или добавить в Perl-версию программы новые функциональные возможности. Это сделать довольно просто, поскольку полученный Perl-код читается достаточно легко (учитывая, что перевод выполняется автоматически, следует отметить это как большое достижение).

В некоторых случаях перевод не выполняется механически. Например, сравнение "меньше чем" и для чисел, и для строк в awk выражается операцией <. В Perl для строк используется it, а для чисел — операция <. В большинстве случаев awk, как и утилита a2p, делает разумное предположение относительно числового или строкового характера двух сравниваемых значений. Однако вполне возможно, что о каких-нибудь двух значениях будет известно недостаточно много для того, чтобы определить, какое должно выполняться сравнение — числовое или строковое, поэтому a2p использует наиболее вероятную операцию и помечает возможно ошибочную строку знаками #?? (Perl-комментарием) и пояснением. После преобразования обязательно просмотрите результат на предмет наличия таких комментариев и проверьте сделанные предположения. Более подробно о работе утилиты a2p рассказывается на ее man-странице. Если этой утилиты в том каталоге, откуда вы вызываете Perl, нет, громко пожалуйтесь тому, кто инсталлировал вам Perl.

Назад | Вперед
Содержание (общее) | Содержание раздела



Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
 





Copyright © 2005-2016 Project.Net.Ru