Каталог статей
Главная » Статьи » Язык программирование Perl » Описание Языка Perl |
PERL – как язык программированияPerl (Practical Extraction and Report Language) является переносимым, интерпретируемым языком, идеально приспособленным для многочисленных приложений по обработке текста. Perl поддерживает структурированные программные конструкции, как и большинство языков программирования высокого уровня, и предлагает богатство встроенных возможностей, накопленных им за годы эволюции среде UNIX. Perl является бесплатным программным обеспечением. Его можно получить платно, и книга Web-программирование служит его бесплатному распространению. Фактически, Perl версии 5 имеется, на CD-ROM, прилагаемом к этой книге. Эта глава, однако, посвящена в первую очередь концепциям Perl версии 4, которая полностью совместима с версией 5 и широко используется на Web. История PERLОтцом языка Perl является Ларри Вол (Larry Wall). Он разработан в 1986 году для создания отчетов о содержании многочисленных текстовых файлов в среде UNIX. Поскольку существующие средства не подходили для решения такой задачи, Вол (Wall) изобрел новое средство для ее решения. Название Perl означает практический язык для извлечения и составления отчетов (Practical Extraction, а Report Language). Вол продолжал добавлять различные возможности к Perl и сделал его доступным для общего пользования. Популярность Perl возрастает до сих пор, и он стал излюбленным средством многих программных пакетов. Умение программировать на Perl имеет возрастающую важность при составлении резюме. PERL – интерпретируемых язык программированияPerl является интерпретируемым языком. Это означает, что программы, написанные на Perl, обычно исполняются путем вызова интерпретатора Perl и переда" ему списка команд, из которых состоит программа. Поскольку интерпретатор тает и исполняет команды Perl именно таким образом, разработчики часто называют программы на Perl скриптами. Если вы вышли из мира UNIX-систем, то, вероятно, знакомы со многими типам; скриптов, такими как скрипты shell, скрипты sed и т. д. В таком случае вы, вероятно, в состоянии оценить полезность и мощность языка, основанного на скриптах. Если вы пришли из мира DOS и Windows, то пакетные (. BAT)-файлы или программы на языке BASIC приходят на ум всякий раз, когда выдумаете об интерпретируемых скриптах. Если вы представляете себе файлы скриптов наподобие пакетных файлов MS-DOS, то вы, возможно, скептически относитесь к использованию скриптов, за исключением самых простейших задач. Однако если вы придерживаетесь непредвзятого взгляда на вещи, то в скором времени сможете оценить всю мощь Perl. Сравнение PERL и языков программирования С/С++Структура Perl очень напоминает структуру языка программирования С и на первый взгляд выглядит так же, как программа С. Все операторы С представлены в 1 Perl, а управляющие структуры, такие как if или for, имеются на языке Perl в несколько измененном виде. Чего не достает в Perl, так это указателей, структур и типов, определяемых пользователем. Место языка С в программировании неоспоримо, но не следует думать, что С-программа всегда лучше, чем эквивалентная программа на языке Perl. Как и у всякого средства, у Perl и у С есть свои области применения, к которым они лучше всего приспособлены. Надо хорошо знать оба языка, чтобы представлять, когда предпочтительнее использование одного из них.
Богатство возможностей языка PERLPerl предоставляет разработчику широкий спектр возможностей для создания кратких и эффективных программ. Ниже приведены некоторые наиболее замечательные черты Perl. Далее в главе вы познакомитесь с использованием каждой из них: ? Ассоциативные массивы, которые индексируются программами с использованием нецелых ключей ? Автоматическое преобразование типов между целыми числами, числами с плавающей точкой и строками ? Автоматическое преобразование размера массивов ? Функции для преобразования бинарных данных ? Широкая поддержка так называемых регулярных выражений, которые программы используют для поиска, замены и других операций, связанных с разбором текста ? Функции вывода/ввода файлов ? Функции форматированного вывода, наподобие функции С, с добавлением к ним способности генерации отчетов на основе шаблонов (template)? Полный набор. операторов С, с добавлением также операций по сравнению строк ? Функции для обработки списков, которые поддерживают стеки, очереди и другие данные списочных типов ? Функции системного сервиса ? Богатый набор операторов и структур управления, включая подпрограммы Использование PERLЧтобы разобраться, как использовать Perl, необходимо проанализировать коды, написанные на нем. Самый простой путь познакомиться с языком Perl состоит в изучении коротких примеров. Следующий раздел основан на коротких примерах для того, чтобы ввести вас в курс дела. После того как вы поймете основы техники программирования на языке Perl, вы сможете писать на нем CGI-скрипты. Использование perl как фильтра данныхСредства UNIX-систем в значительной мере основаны на концепции о том, что программа служит фильтром данных, поток которых поступает на вход, а отфильтрованные данные - на выход. Таким образом, программа-фильтр отбрасывает нежелательные данные. MS DOS-также поддерживает концепцию фильтра данных. Утилита grep в среде UNIX представляет собой классический пример фильтра данных. Эта утилита сканирует входной поток данных в поиске строк, которые соответствуют заданному шаблону. Программа направляет на выход те строки, которые соответствуют этому шаблону. Она отфильтровывает, отбрасывает строки, не удовлетворяющие шаблону. Perl идеально подходит для построения фильтров данных. Действительно, вы можете создать простую версию утилиты grep, используя следующий короткий скрипт на языке Perl: $pattern = shift(@ARGV); # берет командную строку while (<>) { # читать строку из входного потока print if (/$pattern/); # output line if it matches }
В этом случае скрипт просто просматривает входные данные строка за строкой. Если строка содержит текст, определенный первым аргументом командной строки, то программа печатает такую строку. Не беспокойтесь, если написанный текст скрипта вам пока непонятен. В этой главе вы найдете описание всех операторов подобного типа программ на языке Perl. Использование языка PERL как шлюза безопасностиВопросам безопасности придается большое значение как в программировании CGI, так и при решении других задач, связанных с программным обеспечением для сетей. Часто бывает необходимо защитить файлы и другие ресурсы системы от угрозы со стороны пользователей, которая может проистекать от их неаккуратности или даже злого умысла. Это особенно важно для Web-серверов, а также других серверов, таких как FTP-сервер, которые подключены к Internet, где наличие злоумышленных пользователей хорошо известно. Одним из путей защиты системы от атак таких злоумышленников служит создание шлюзов безопасности, через которые пропускаются входные данные. В этом случае только данные, оцененные шлюзовой программой как безопасные, передаются в систему. Традиционно большая часть серверов Internet исполняется под системой UNIX и написана на языке С. Неверное использование программистами указателей на языке С ведет к нарушению безопасности работы системы. Одним из достоинств Perl, существенным при написании надежных шлюзовых программ, служит тот факт, что переменные строкового типа изменяют свою длину автоматически в зависимости от потребности. Строковые переменные содержат столько символов, сколько им присваивает скрипт. Perl не позволяет программе писать данные в одну переменную таким образом, чтобы нарушить целостность данных другой переменной. Имеется также специальная версия языка Perl, которую называют taintperl, в которой осуществляется проверка зависимостей между данными и предотвращается выполнение системой команд по передаче данных серверу от источника, не заслуживающего доверия. Если испорченные или некорректные данные поступают на вход программы taintperl, то она помечает все значения командной строки, переменных окружения и входные данные как испорченные, предотвращая их дальнейшую передачу серверу и возникновение фатальной ошибки. FRONTEND-программы для связи с базой данныхУтилита типа frontend для базы данных представляет собой программу, которая упрощает доступ к серверу базы данных для остальных программ. Такая программа обрабатывает запрос пользователя к базе данных и на этой основе формирует свой запрос к базе данных с параметрами, необходимыми для доступа к данным на сервере. Frontend-программа может также обрабатывать результаты запроса, формировать ответ и посылать его обратно пользователю. Как вы узнаете, программисты создают простые приложения для баз данных исключительно на языке Perl, причем не возникает необходимости в специальном сервере базы данных. Perl имеет встроенные возможности для отображения ассоциативных массивов (обсуждаемых дальше в этой главе) на файл базы данных. В результате доступ к файлу базы данных в рамках скрипта Perl так же прост как и доступ к элементам массива, поскольку ввод/вывод в файл является прозрачным для скрипта. Для более сложных приложений на основе баз данных Perl может выполнять роль связующего звена с сервером базы данных и функционировать как Frontend программа для базы данных. Несколько специальных версий языка Perl было создано для расширения поддержки конкретных серверов баз данных. Например, ora perl обеспечивает возможность доступа к серверам баз данных Oracle. Использование языка PERL для написания CGI-cкриптовКак вы узнали из предыдущей главы, CGI обеспечивает узлам Web вoзмoжнoсть интерактивной работы с клиентскими программами, в качестве которых обычно выступает броузер. Во многих случаях узлы используют скрипты CGI для доступа к базам данных в тех случаях, когда клиент и сервер должны обмениваться данными. Использование CGI позволяет пользователю получать доступ к базе данных на Web, используя обычный Web-броузер. CGI-скрипт читает и обрабатывает содержание НТМL-форм, устанавливает соединение с базой данных, посылает ей запросы, обрабатывает результаты ответов, формируя на их основе новый НТМД документ, и затем посылает его обратно пользователю. Кроме того, все эти шаги должны быть сделаны так, чтобы обеспечить безопасность сервера. Знакомство с языком PERLХочется верить, что вас удалось убедить в необходимости хотя бы рассмотреть использование языка Perl для написания скриптов CGI. В следующих разделах вы узнаете, как запускать Perl на исполнение и как создавать полезные скрипты на языке Perl. Благодаря сходству Perl и С, в этой главе мы сосредоточим внимание на том, что объединяет их, и на их различиях. Больше внимания в главе будет уделено различию между этими языками. <HELLO WORLD> НА ЯЗЫКЕ PERLБольшинство учебников по языкам программирования начинается с простейшей программы, которая выводит текст <Hello World>. В соответствии с этой традицией мы приводим нашей книге несколько примеров программ <Hello World>. Следующий код служит для вывода на экран сообщения <Hello World> три раза, используя три различных способа: # Три способа как сказать <Hello World> printf("Hello world\n"); printf("%s\n", 'Hello world'); print "Hello World", "\n"
Первая строка представляет собой комментарий. На языке Perl знак диез (#) означает комментарий. Когда Perl находит этот знак, он игнорирует весь текст, начиная с него и до конца строки. Знак диез служит единственным способом ввести комментарии на языке Perl. В отличие от С здесь нет конструкции, которая сразу бы определяла несколько строк комментариев. На первый взгляд функция printf выглядит так же, как в языке С. Однако вы можете заметить, что программа не содержит функции main. Хотя скрипты поддерживают подпрограммы (аналогичные функциям С), скрипт не определяет раздела, который бы содержал тело функции main. Вместо этого интерпретатор Perl сразу начинает исполнение скрипта с первого выражения в файле. Второе выражение, содержащее функцию printf, опять-таки выглядит аналогично своему использованию в языке С, за исключением того, что вторая строка аргументов заключена в одинарные кавычки ('') в противоположность двойным ("), используемым в С. В языке Perl строка в двойных кавычках означает определенный род преобразования. Например, интерпретатор Perl преобразует выражение новой строки в двойных кавычках "\n" в символ новой строки. Скрипт Perl использует одинарные кавычки для включения строковых литералов, т. е. строковых выражений, как это написано выше. Например, Perl напечатает выражение в одинарных кавычках ('\n') как два знака ('\') и 'n', а не как знак перехода на новую строку. Наконец, последняя строка кода программы содержит функцию print, которой нет в языке С. В этом случае наиболее полезная черта этой функции заключается в отсутствии скобок. Оказывается, что вы можете всегда включать скобки в состав функция языка Perl. Однако в большинстве случаев необходимости в них нет. Perl требует включения скобок только в том случае, если без них выражение оказывается не полностью определенным, двусмысленным. Тем не менее, включение скобок в код соответствует хорошей традиции, и вам не следует отказываться от нее. | |
Просмотров: 716
| Теги: |
Всего комментариев: 0 | |