Как работает Perl

Carding 4 Carders

Professional
Messages
2,729
Reaction score
1,521
Points
113
Perl - довольно простой, широко известный и уважаемый язык сценариев. Он используется для множества задач (например, вы можете использовать его для создания эквивалента пакетных файлов DOS или сценариев оболочки C), но в контексте веб-разработки он используется для разработки сценариев CGI.

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

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

СОДЕРЖАНИЕ
  1. Начиная
  2. Привет, мир
  3. Переменные
  4. Петли и если
  5. Функции
  6. Чтение

Начиная​

Чтобы начать работу с Perl, вам понадобится интерпретатор Perl. На любой машине UNIX существует вероятность 99,99%, что он уже там. На компьютере с Windows или Mac вам необходимо загрузить последнюю версию языка и установить ее на свой компьютер. Perl широко доступен в Интернете и является бесплатным.
Затем убедитесь, что вы заглянули в каталог DOCS, который поставляется с Perl - там будет что- то вроде руководства пользователя. В какой-то момент не помешало бы прочитать всю документацию или хотя бы отсканировать ее. Первоначально это будет громоздко, но после прочтения этой статьи станет намного понятнее.

Привет, мир​

После загрузки Perl убедитесь, что ваш путь правильно настроен для включения исполняемого файла Perl. Затем откройте текстовый редактор и создайте текстовый файл. В файле разместите следующую строку:
Code:
print "Hello World!\n";
Назовите файл «test1.pl». В командной строке введите:
Code:
perl test1.pl
Perl запустит и выполнит код в текстовом файле. Вы должны увидеть слова "Hello World!" выводится на стандартный вывод (стандартный вывод). Как видите, создавать и запускать программы на Perl очень просто. (Если вы используете UNIX, вы можете разместить комментарий типа #! / Usr / bin / perl в первой строке, и тогда вам не придется вводить слово «perl» в командной строке.)

Команда печати выводит данные на стандартный вывод. \n нотация линия подачи. Это было бы более понятно, если бы вы изменили тестовую программу, чтобы она выглядела так ( # обозначает комментарий):
Code:
# Print on two lines
print "Hello\nWorld!\n";
Обратите внимание, что команда печати понимает, что она должна интерпретировать "\n" как перевод строки, а не как буквальные символы. Интерпретация произошла не из-за команды печати, а из-за использования двойных кавычек (практика, называемая цитированием в Perl). Если бы вместо этого вы использовали одинарные кавычки, например:
Code:
print 'Hello\nWorld!\n';
символ \ n не будет интерпретироваться, а будет использоваться буквально.

Также существует символ обратной кавычки: `. Пара из них подразумевает, что то, что находится внутри кавычек, должно интерпретироваться как команда операционной системы, и эта команда должна выполняться с выводом команды, которая печатается. Если вы поместите внутри обратных кавычек операцию командной строки из операционной системы, она будет выполнена. Например, в Windows NT вы можете сказать:
Code:
print 'Hello\nWorld!\n';
для запуска команды DIR и просмотра списка файлов из текущего каталога.
Вы также увидите символ /, используемый для цитирования регулярных выражений.

Команда печати понимает запятые как разделители. Например:
Code:
print 'hello', "\n", 'world!';
Однако вы также увидите точку:
Code:
print 'hello'. "\n". 'world!';
Точка на самом деле является оператором конкатенации строк.
Есть также оператор printf для людей C.

Примечание PERL
В Windows NT нельзя сказать:
Code:
print `dir`;
потому что dir не является отдельным исполняемым файлом - это часть командного интерпретатора cmd. Введите cmd /? в приглашении DOS для получения подробной информации.

Переменные​

Переменные в Perl интересны. Вы не объявляете их и всегда используете знак $ для их обозначения. Они возникают при первом использовании. Например:
Code:
$s = "Hello\nWorld\n";
   $t = 'Hello\nWorld\n';
   print $s, "\n", $t;
Или же:
Code:
$i = 5;
   $j = $i + 5;
   print $i, "\t", $i + 1, "\t",  $j;     # \t = tab
Или же:
Code:
$a = "Hello ";
   $b = "World\n";
   $c = $a . $b;    # note use of . to concat strings
   print $c;

Поскольку . является конкатенацией строк,. = имеет ожидаемое значение так же, как "+ =" в C. Поэтому вы можете сказать:
Code:
$a = "Hello ";
   $b = "World\n";
   $a .= $b;
   print $a;

Вы также можете создавать массивы:
Code:
@a = ('cat', 'dog', 'eel');
   print @a, "\n";
   print $#a, "\n";  # The value of the highest index, zero based
   print $a[0], "\n";
   print $a[0], $a[1], $a[2], "\n";
$ # Нотация получает самый высокий индекс в массиве, что эквивалентно числу элементов в массиве минус 1. Как и в C, все массивы начинают индексацию с нуля.

Вы также можете создавать хеши:
Code:
%h = ('dog', 'bark', 'cat', 'meow', 'eel', 'zap');
   print "The dog says ", $h{'dog'};

Здесь «лай» ассоциируется со словом «собака», «мяу» - со словом «кошка» и так далее. Более выразительный синтаксис того же объявления:
Code:
%h = (
      dog => 'bark',
      cat => 'meow',
      eel => 'zap'
   );
Оператор => заключает левую строку в кавычки и действует как запятая.

Петли и если​

Вы можете создать простой цикл for (для), как в C:
Code:
for ($i = 0; $i < 10; $i++)
   {
      print $i, "\n";
   }

While (хотя) утверждения просты:
Code:
$i = 0;
   while ( $i < 10 )
   {
      print $i, "\n";
      $i++;
   }

If (если) утверждения так же просты:
Code:
for ($i = 0; $i < 10; $i++)
   {
      if ($i != 5)
      {
         print $i, "\n";
      }
   }

Логические операторы работают, как они делают в C:
  • && и
  • || или же
  • ! нет

Для номеров:
  • == равно
  • ! = не равно
  • < , <= , > , > = (как и ожидалось)

Другие:
  • eq
  • ne
  • lt
  • le
  • gt
  • ge
Если у вас есть массив, вы можете легко просмотреть его с помощью foreach:
Code:
@a = ('dog', 'cat', 'eel');
   foreach $b (@a)
   {
      print $b, "\n";
   }
Foreach берет каждый элемент массива @a и помещает его в $ b до тех пор, пока @a не будет исчерпан.

Примечание PERL
Вы должны использовать фигурные скобки «начало» и «конец» - { и } - даже для одной строки.

Функции​

Вы создаете подпрограмму со словом sub . Все переменные, переданные в подпрограмму, поступают в массив с именем _ . Следовательно, работает следующий код:
Code:
show ('cat', 'dog', 'eel');

   sub show
   {
      for ($i = 0; $i <= $#_; $i++)
      {
         print $_[$i], "\n";
      }
   }
Помните, что $ # возвращает наивысший индекс в массиве (количество элементов минус 1), поэтому $ # _ - это количество параметров минус 1. Если вам нравится такая тупость, тогда вам понравится PERL.

Вы можете объявить локальные переменные в подпрограмме с помощью слова local , например:
Code:
sub xxx
   {
      local ($a, $b, $c)
      ...
   }

Вы также можете вызвать функцию с помощью &, например:
Code:
&show ('a', 'b', 'c');
Символ & требуется только в случае неоднозначности, но некоторые программисты используют его постоянно.
Чтобы вернуть значение из подпрограммы, используйте ключевое слово return.

Чтение​

Чтение из STDIN
Для чтения данных из stdin (стандартно) используйте дескриптор STDIN. Например:
Code:
print "Enter high number: ";
   $i = <STDIN>;
   for ($j = 0; $j <= $i; $j++)
   {
      print $j, "\n";
   }
Пока вы вводите целое число, эта программа будет работать должным образом. <STDIN> читает строку за раз. Вы также можете использовать getc для чтения одного символа, например:
Code:
$i = getc(STDIN);
Или используйте чтение:
Code:
read(STDIN, $i, 1);
1 в третьем параметре команды чтения - это длина считываемого ввода.

Чтение переменных среды
PERL определяет глобальный хеш с именем ENV, и вы можете использовать его для получения значений переменных среды. Например:
Code:
print $ENV{'PATH'};

Чтение аргументов командной строки
PERL определяет глобальный массив ARGV , который содержит любые аргументы командной строки, переданные скрипту. $ # ARGV - это количество переданных аргументов минус 1, $ ARGV [0] - это первый переданный аргумент, $ ARGV [1] - второй, и так далее.
Теперь вы должны уметь читать и писать простые сценарии Perl. Вы также должны иметь возможность изучить полную документацию, чтобы узнать больше. Для получения дополнительной информации см. Ссылки на следующей странице.

Примечание PERL
Имя переменной среды должно быть в верхнем регистре.
 
Top