Поиск

Ваша первая программа

Чтобы написать программу на языке Perl, необходимо иметь текстовый редактор, который позволяет набрать неформатированный текст и сохранить его в файле. В качестве примера простых текстовых редакторов можно привести программу Notepad (Блокнот) в Microsoft Windows и EDIT.EXE в DOS. В UNIX имеются текстовые редакторы vi, emacs и pico. По крайней мере, один из них должен быть на вашем компьютере. На Мае приложение MacPerl содержит встроенный текстовый редактор, поэтому для создания новой программы достаточно выбрать команду File » New.

Вам не следует для набора программ на Perl пользоваться текстовым процессором. Текстовые процессоры (такие как Microsoft Word, Wordpad, WordPerfect и др.) сохраняют документы вместе с информацией об их форматировании, даже если вы не используете специальных атрибутов форматирования. Интерпретатор Perl не понимает эти коды и поэтому программы, набранные в текстовом процессоре, не будут работать. Если все же вы решите воспользоваться текстовым процессором, не забудьте сохранить программы в виде обычного текстового файла.

Наберите вашу первую программу

Откройте текстовый редактор и наберите следующую программу:

#!/usr/bin/perl
print "Hello, World!n";

Строка с #! должна быть первой строкой файла.

После того как вы наберете эту программу в текстовом редакторе, сохраните ее в файле под.названием hello. Расширение не обязательно, но если хотите, можете его указать. Некоторые приложения Windows и Macintosh используют расширения для определения типа файлов. Если по какой-то причине вы решили дать расширение, то лучше воспользуйтесь стандартными — .pi или .plx. Для определенности назовите набранный файл hello.pl.

Запуск программы

Для запуска программы необходимо перейти в режим командной строки. В UNIX зарегистрируйтесь в системе и откройте окно терминала. В Microsoft Windows откройте сеанс MS-DOS. Перейдите в каталог, где находится программа hello, используя команду оболочки cd.

Наберите в командной строке следующее. (Здесь показана командная строка DOS, приглашение командной строки UNIX несколько отличается.)

C:PROGRAMS> perl hello

Должно появиться сообщение:

 Hello, World!

Если у вас получилось, примите наши поздравления! Запомните способ запуска этой программы, потому что подобным образом мы будем запускать программы на протяжении всей книги. (Существуют и другие способы, мы вам расскажем и о них.)

Если что-то не получилось, проверьте следующее.

  • Если появилось сообщение об ошибке Bad command or file name или perl: command not found, посмотрите, в каком каталоге находится программа perl, и добавьте путь к ней в переменную оболочки PATH.
  • Сообщение об ошибке Can't open perl script hello: A file or directory does not exist говорит о том, что либо файл hello находится в другом каталоге, либо вы сохранили его под другим именем.
  • Ошибка syntax error означает, что интерпретатор Perl нормально запустился, но программа не может определить, что же находится в файле hello. Например, вы могли ошибиться при наборе, или тестовый процессор добавил в сохраненный файл коды форматирования, Для просмотра содержимого файла в UNIX воспользуйтесь командой cat, а в DOS — type. Тщательно проверьте содержимое файла, обращая внимание на кавычки и знаки пунктуации.

Если вы используете пакет Mac Perl, просто выберите команду Run "hello" в меню Script, и ваша программа запустится. Если для набора программы вы не пользовались встроенным тестовым редактором, откройте программы с помошью команды Open меню File, а затем выполните команду Run.

Заработало! Что же произошло?

Команда perl hello запустила на вашем компьютере программу perl. Эта программа называется интерпретатором perl. Интерпретатор — "ум, честь и совесть" Perl. Его задача состоит в том, чтобы открыть указанный в командной строке файл (в данном случае hello), найти в нем программу и выполнить ее.

Под фразой "выполнить ее" я подразумевал следующее. Прежде всего интерпретатор должен проверить корректность синтаксиса выражений, функций и операторов, составляющих программу на Perl, а затем последовательно все их выполнить.

Интерпретатор perl читает программу с диска и выполняет ее до тех пор, пока она не закончится. После выполнения программы интерпретатор возвращает управление операционной системе.

Теперь посмотрим, как же выполнялась программа hello.

Проследим за Perl

Первая строка программы hello

#!/usr/bin/perl

В Perl все, что идет в строке после символа #, считается комментарием. Комментарии Perl попросту игнорирует. Однако символы #! означают нечто другое. После них должен быть указан путь к интерпретатору perl — /usr/bin/perl. В UNIX принято, что программа, содержащая в первой строке символы #!, после которых указан путь к интерпретатору, может запускаться по имени. Обратитесь к разделу "Вопросы и ответы" в конце этого занятия за информацией о запуске программ. Некоторые Web-серверы, например Apache, также используют строку с #! для запуска программ без непосредственного вызова интерпретатора perl.

Для нас сейчас это не важно, мы считаем первую строку комментарием.

Следующая строка программы:

print "Hello, World!n";

В этой строке находится оператор Perl, обозначающий действия, которые должен выполнить Perl. Строка содержит вызов функции print, которой передается строка Hello, World! и символ новой строки. Функция должна отобразить эту строку на экране. В конце оператора следует точка с запятой.

В Perl символ ; называется оператором-разделителем. Он разделяет операторы в программах Perl и указывает, где конец одного оператора и начало следующего.

В нашем случае функция print отображает фразу Hello, World!. Символы п в конце строки говорят Perl о том, что нужно вывести пустую строку после напечатанной фразы. Кавычки, в которые заключена фраза и п, сообщают Perl о том, что это строка, а не другая функция. На следующем занятии мы посвятим строкам достаточно много времени.

Это вы должны знать

Программы на Perl можно записывать в свободной форме. Синтаксис языка не требует каких-либо особых форм записи или форматирования текста. Вы можете помещать между операторами пробелы, табуляторы и даже символы перехода на новую строку. В Perl все они называются пробелами и никак не влияют на работу интерпретатора.

Конечно, есть определенные места в программе, где нельзя помешать такие символы. Например, нельзя вставлять пробелы в имя функции: pr int — неправильное имя функции. Нельзя также вставлять их в числа, скажем, 25 61 — не то же самое, что 2561. Пробелы внутри строки, как, например, в строке "Hello, World!", всегда отображаются. За исключением приведенных выше случаев, во все остальные места программы можно безболезненно помешать символы пробела. Например, вы можете переписать программу из рассматриваемого нами примера следующим образом:

#!/usr/bin/perl
print
{
"Hello, World! n"
}

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

Стиль, используемый в наших примерах, достаточно консервативен. Иногда операторы разделяются несколькими пустыми строками, чтобы разделить логические блоки в достаточно длинной программе на Perl. Кстати, в документации по Perl приведено описание рекомендуемого стиля оформления программ. Документ этот называется peristyle.

Стили оформления программ в Peri могут быть весьма вычурными. Программы могут быть написаны в столбик, как стихотворение, или в одну строку. Некоторые программисты умудряются оформлять программы в виде рисунка, и, что самое интересное, программы при этом не только не перестают работать, но еще и выполняют полезную работу! Каждый год The Perl Journal(http://www.tpj.com) проводит конкурс на самую запутанную Perl-программу— Obfuscated Perl Contest. Лучше бы вам этого не видеть.