Оцените этот текст:


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



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

А теперь подробно разберем каждую строку.

#!/usr/local/bin/perl
	Данная строка должна быть первой в любой Пел-программе.
Она указыванет системному интерпретатору что данный файл - это  Пел-программа.

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

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

Здесь слово print - это команда "вывести". Все что в кавычках - это символы,
\n - перевод строки и ';' - признак конца команды. Он обязателен.
В одной строке может быть несколько команд и все они должны завершаться
символом ';'. После него может быть символ '#' - это значит остаток
строки считается комментарием.

Над этой строкой автору
пришлось больше всего поломать голову так как в нее постоянно
лезли какие то странные "hello", "hello all", "Построемся и спасемся",
"Строй наше спасение" и т.д и т.п.

Если вы никогда не работали с Пел, то бъюсь на спор в 10$, что данная
программа сразу у вас не заработает!
Не потому что она не верна, а потому что "Нельзя объять необъятное".
Сразу, потом можно, да и то частями.
Сначало сделайте ваш файл test1.pl исполняемым. Для этого введите
команду:

	chmod +x test1.pl

Затем проверьте где у вас Пел. Для этого введите:

	which perl

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

Если: perl: Command not found.

То тогда закройте книжку и ложитесь спать. У вас просто нет Пел или
он не установлен. А мне остается послать вас к системному администратору
или к man (для переводчиков- man сокращение от manual а не то что вы подумали).

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

	test1.pl

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

	./test1.pl

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



	#!/usr/local/bin/perl
	open(PASS, ")
	    {
	    print;
	    }
	close(PASS);

Пояснения:

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

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

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

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

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

Результат работы этой программы тот же что и команды cat /etc/passwd.
По экрану пробежали непонятные строки но зато теперь перед вами
открыты горизонты Пел программирования!
Все последующие примеры будут развитием этой программы и она
превратится из гадкого утенка в прекрасного лебедя (не генерала).



      #!/usr/local/bin/perl
      open(PASS, ")
          {
	    ($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' - табуляции.




	#!/usr/local/bin/perl
	open(PASS, "sort -n -t : +3 -4 +0 /etc/passwd|") || die "Файл не найден!";
	while()
	    {
	    ($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()
    {
    ($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
----------------------------------------------------------------------

Если вам интересно узнать как работает эта программа, то переверните
страницу и начините свое путешествие в мире Пел.
Желаю удачи!

Last-modified: Thu, 24 Apr 1997 17:43:55 GMT
Оцените этот текст: