Главная

Интернет
сети
Windows
Linux
Bios
Koding
Hard
VIDEO
Sound
Soft
разное
реестр

карта сайта

фотоальбом

Web мастеру

Гостевая

друзья сайта

о сайте

 

 

Содержание

От простого к сложному

Прежде чем приступить к последовательному ознакомлению с не знакомым для вас языком, должен оговориться и сказать, что все примеры да и сам язык описанию которого посвящена эта книга это Perl версии 5.003 для операционной системы FreeBSD версии 2.01. Существуют реализации этого языка для операционных систем OS/2 , MS-DOS и Windows NT но они немного отстают по возможностям от оригинала, рожденного в недрах Unix.

Пример 1.
Введите в файл test1.pl следующие строки:


		#!/usr/local/bin/perl
		# Содержимое файла test1.pl
		print "Наше Вам с кисточкой!\n";
А теперь подробно разберем каждую строку.

#!/usr/local/bin/perl

Данная строка должна быть первой в любой Perl-программе. Она указывает системному интерпретатору что данный файл - это Perl-программа.


# Содержимое файла test1.pl
Эта строка называется комментарием. Она всегда начинается символом '#' и заканчивается таким объяснением что как говорил великий Ходжа Насреддин "это тонкий философский вопрос", а говоря простым языком здесь можно писать все что угодно. Даже пожелание руководству. Уж здесь оно точно до него не дойдет.

print "Наше Вам с кисточкой!\n";

Самая последняя ну и конечно главная. Она просто выводит на экран надпись "Наше Вам с кисточкой!".

Здесь слово print - это команда "вывести". Все что в кавычках - это символы, \n - 

перевод строки и ';' - признак конца команды. Он обязателен. В одной строке может быть несколько команд и все они должны завершаться символом ';'. После него может быть с

имвол '#' - это значит остаток строки считается комментарием.

Над этой строкой автору пришлось больше всего поломать голову так как в нее постоянно 

лезли какие 

то странные "hello", "hello all", "Построимся и спасемся", "Строй наше спасение" и т. д. и т.п.

Если вы никогда не работали с Perl, то бьюсь на спор в 10$, что данная программа сразу у вас 

не заработает! 

Не потому что она не верна, а потому что "Нельзя объять необъятное". Сразу, потом можно, 

да и то частями. Сначала сделайте ваш файл test1.pl исполняемым. Для этого введите команду:


	chmod +x test1.pl
Затем проверьте где у вас Perl. Для этого введите:

	which perl
Система вам выдаст что то вроде: /usr/bin/perl
Если:

perl: Command not found.
То тогда закройте книжку и ложитесь спать. У вас просто нет Perl или он не установлен. 

А мне остается 

послать вас к системному администратору или к man (для переводчиков- man сокращение от manual 

а не то что вы подумали).

Теперь проверьте что бы строка 01 содержала то что выдала команда which. Если совпало то введите:


	test1.pl
и бьюсь на 50$, что и теперь программа не заработает, так как правильней ввести:

	./test1.pl

Если я проиграл, то не радуйтесь. Да же если вам удалось запустить программу как test1.pl 

это значит, 

что у вас будут неприятности в будущем.

Пример 2.
Данная программа выводит на экран все ваши секреты. А именно файл /etc/passwd.


	#!/usr/local/bin/perl
	open(PASS, "</etc/passwd") || die "Файл не найден!";
	while(<PASS>)
	    {
	    print;
	    }
	close(PASS);
Пояснения:

open(PASS, "</etc/passwd") || die "Файл не найден!";

"Открыть" файл, т.е. создать указатель файла PASS, и в случае ошибки выдать 

"Файл не найден!" и закончить программу.


while(<PASS>)
Читать по одной строке файла в переменную по умолчанию $_.

  {
Открыть блок операторов.

  print;
Вывести на экран переменную по умолчанию $_

   }
Конец блока.

close(PASS);
Закрыть файл. Этого можно и не делать, т. к. файл автоматически закроется после окончания 

программы.

Результат работы этой программы тот же что и команды cat /etc/passwd. 

По экрану пробежали непонятные строки но зато теперь перед вами открыты горизонты Perl программирования! 

Все последующие примеры будут развитием этой программы и она превратится из гадкого утенка в прекрасного лебедя (не генерала).

Пример 3.
Разделение полей.


      #!/usr/local/bin/perl
      open(PASS, "</etc/passwd") || die "Файл не найден!";
      while(&ltPASS>)
          {
	    ($login, $pass, $uid, $gid, $name, $home_dir, 
$shell) = 
split(':');
	    print "$login \t $name\n";
          }
      close(PASS);
Пояснение:

($login, $pass, $uid, $gid, $name, $home_dir, $shell) = 
split(':');
Присвоить указанным переменным поля входной строки, считая разделителем символ ':'.

print "$login \t $name\n";
Вывести login - имя пользователя и его описание. Поля разделены символом '\t' - табуляции.

Пример 4.
Вывести имена пользователей, отсортированных по группам.


	#!/usr/local/bin/perl
	open(PASS, "sort -n -t : +3 -4 +0 /etc/passwd|") || 
die "Файл не 
найден!";
	while(<PASS>)
	    {
	    ($login, $pass, $uid, $gid, $name, $home_dir, 
$shell) = 
split(':
');
	    print "$login \t $gid \t $name\n";
	    }
	close(PASS);
Пояснения:

open(PASS, "sort -n -t : +3 -4 +0 /etc/passwd|") || die 
"Файл не найден!";

В данной строке весь фокус! Входным файлом для нашей программы стал выход команды sort которая и отсортирует входные данные.

Форматированный вывод.

Ну а теперь напечатаем на экране все наши данные в удобной форме.


#!/usr/local/bin/perl
open(PASS, "sort -n -t : +3 -4 +0 /etc/passwd|") || die 
"Файл не найден!";
while(<PASS>)
    {
    ($login, $pass, $uid, $gid, $name, $home_dir, $shell) = 
split(':');
    write();	# Форматированный вывод данных.
    }
close(PASS);
exit 0;		# Завершение программы
############ Описание формы вывода ##################
format STDOUT =
Пользователь: ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
				$name
              ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
                                $name
              ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
                                $name
--------------------------------------------------------------
Login:@<<<<<<<<   Uid:@<<<  Gid:@<<<  Home dir:@<<<<<<<<<<<<<<
      $login,         $uid,     $gid,          $home_dir
--------------------------------------------------------------
	# Это последняя строка программы

Фрагмент результата:


Пользователь: Калужский ликероводочный завод. Лучшие водки и
              настойки. Звонить только перед праздником 
Кострикову
              Анатолию т. 2-23-06,,,
------------------------------------------------------------
Login:uucryst     Uid:1055  Gid:66    Home dir:/var/spool/
uucppublic/
-------------------------------------------------------------
Пользователь: Торговый Дом Дилен,,,
-------------------------------------------------------------
Login:uudilen     Uid:1075  Gid:66    Home dir:/var/spool/
uucppublic
-------------------------------------------------------------

Если вам интересно узнать как работает эта программа, то переверните страницу и начините свое 

путешествие в мире Perl. Желаю удачи!

С вопросами, пожеланиями и предложениями обращайтесь по адресу

E-mail

ICQ: 262309330

01.08.2003

Идея и реализация: Астахов Николай

Свои статьи подходящие под общую тематику сайта можете присылать сюда.

Наиболее интересные из них будут помещены на сайте с обязательным указанием авторства.

Hosted by uCoz