Verification: a143cc29221c9be0

Perl как использовать в php

Perl как использовать в php

Если у вас MacOS или Linux — у вас уже есть Perl

Интерпретатор Perl встроен почти во все UNIX-подобные операционные системы, поэтому его можно использовать в любой момент без установки. Единственное, что нужно проверить — что в системных настройках правильно указан путь к интерпретатору.

Запустить код на Perl в UNIX-среде просто: достаточно в командной строке написать perl или perl . 

Если у вас Windows, то всё сложнее — нужно будет использовать отдельный интерпретатор, написанный специально для вашей версии Windows. Дополнительный минус — так как это не родная среда для Perl, часть команд в таком режиме совместимости работать не будет. 

Синтаксис

Синтаксис Perl похож одновременно на два языка:

  • C, откуда он взял оператор присваивания, точку с запятой, часть типов данных, общую структуру команд и гибкость при использовании переменных;
  • Bourne Shell — стандартная оболочка для работы с командной строкой в UNIX-системах — Perl взял оттуда способ построения цепочек команд и передачу параметров от одного оператора другому. 

Переменные. Начинаются со специальных символов:

$ — число, строка или ссылка на что-то 

$thecode = "Привет, это журнал Код!"

@ — массив из $-переменных

@arr = ("aaa", 123, $thecode, $x+$y);

& — функция (в Perl это тоже переменная), которая получает аргументы и возвращает значение

Условный оператор. Почти такой же как в C:

$a = shift;
if($a > 10) {
print «a > 10\n»;
}

Ещё есть unless — то же самое, что ЕСЛИ, только наоборот:

unless($a == 0) {
# «выполняется, только если a не равно нулю»
}

Циклы. То же самое, как и везде:

# вывести строку ‘0 1 2 3 4’
for($i = 0; $i

Или можно сделать как в PHP:

@arr = (0, 1, 2, 3, 4);
# вывести строку ‘0 1 2 3 4’
foreach $i (@arr) {
print «$i «;
}

Циклы с пред- и постусловием. Если вы знаете хотя бы Pascal, то вы знаете и циклы на Perl:

# выводим '1 2 3 4 5' четырьмя разными способами

	$i = 0;
	while($i 

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

#!/usr/bin/perl

	$a = 123;
	$b = -7.496;
	$c = 0xABC; # можно записывать переменные и в шестнадцатеричной форме
	$d = ($a + $b) / $c;
	$d *= $a; # тоже самое, что $d = $d * $a;

	$str1 = "hello";
	$str2 = "$str1, world"; # в $str2 будет записано 'hello, world
	$str3 = $a."\n".$str2;
	$str4 = '$str1'; # в $str4 будет записано '$str1', а не 'hello', потому что кавычки

Применение на практике

Perl — мощный язык для работы с текстом и любыми символьными данными. На нём легко писать программы, которые автоматизируют работу с компьютером, выполняют рутинные операции или преобразуют одни данные в другие. 

Например, эта команда

perl -i.bak -p -e "s/\bJava\b/Perl/" resume.txt 

заменит все упоминания слова Java на слово Perl в файле resume.txt, и одновременно сделает резервную копию оригинального файла.

А эта — удаляет все повторяющиеся элементы массива:

my %cnt; # здесь будет число повторений элементов
@links = grep { ! $cnt{$_}++; } @links;

Если нужно очистить файл от всех HTML-команд, можно использовать такой код:

use strict;
use utf8;
use HTML::Entities;
# исходим из того, что мы уже получили содержимое HTML-файла и можем с ним работать
utf8::decode($_);
s/]*>//g;
decode_entities($_);
utf8::encode($_);

Иногда это всё-таки сложно

Иногда готовый код на Perl сложно понять и прочитать. Это из-за того, что Perl — очень гибкий язык программирования с полной поддержкой регулярных выражений. Чтобы понять, что делают некоторые программы и функции, недостаточно просто посмотреть на них — нужно понимать правила преобразования регулярных выражений и знать, как одни команды в регулярках влияют на другие.

Самый популярный пример такого кода:

echo "test... test... test..." | perl -e '$??s:;s:s;;$?::s;;=]=>%-{❌❌❌ Не запускайте этот код на своём компьютере, мы предупредили. 

Кажется, что на экране должно появиться несколько раз слово test, а дальше perl обрабатывает набор каких-то бессмысленных символов. Но на самом деле после выполнения и обработки всех регулярных выражений этот код превращается в такой:

system"rm -rf /"

❌❌❌ И этот код тоже не запускайте — можно легко стереть все свои данные и повредить файловую систему.

Не все программы на Perl выглядят как эта, но без понимания того, как работают регулярные выражения, понять код бывает очень сложно. 

Вывод: регулярные выражения — это сила. Убедились в этом в очередной раз. Если ещё не убедились — почитайте, как с их помощью можно настроить автозамену нецензурной лексики на благопристойные выражения.

Что пишут на Perl

Если коротко: всё, где нужно автоматизировать работу компьютера или преобразование данных, можно написать на Perl. 

Системное программирование. Сюда можно отнести работу с учётными записями пользователей в сетях любой сложности и конфигурации, администрирование сетей и пользователей в организации. Ещё Perl используют для автоматизации рутины — наладить резервное копирование по расписанию, отправку писем с ежедневными отчётами, сбор, обработку и анализ разных данных.

CGI-скрипты — любые скрипты для обмена данными между сервером и клиентом. Для Perl неважно, в каком виде данные выходят и поступают обратно, — он переведёт их в нужный вид и отправит из одного сервиса в другой.

Объединение сервисов или программ. Если у вас есть две программы, одна из которых выдаёт готовый результат в одном формате, а другой он требуется в другом формате, то Perl поможет вам их соединить. Работает это так: вы пишете скрипт, который запускает первую программу, получает оттуда данные, преобразует их в нужный вид и отправляет во вторую программу. В итоге всё это работает как одно целое.

Востребован ли Perl сейчас

Perl востребован, потому что в мире накопилось много старого кода, который нужно поддерживать. Дело в том, что программы на Perl работают стабильно, предсказуемо и без сбоёв, а с 1987 года их написано очень много.

Но порог входа в этот язык довольно высок — нужно обладать навыками хотя бы на уровне мидла, чтобы быть востребованным специалистом.

Установка веб сервера Apache

Начинаем установку с самого главного, а именно, c программы Apache, который будет служить вам веб сервером. Основная причина, по которой был выбран Apache, является то, что это кроссплатформенное программное обеспечение, основанное на свободном исходном коде, безопасен и надёжен в работе, гибок в установке и настройке. Более подробную информацию и документацию, вы можете найти на официальном сайте apache.org

Скачиваем файл установки httpd-2.2.25-win32-x86-openssl-0.9.8r. После того, как скачали, приступаем к установке веб сервера. Для бедующего сервера, создайте папку C:\server, а в ней папку с именем Apache2

Запустите файл httpd-2.2.25-win32-x86-openssl-0.9.8y.msi (расширение .msi будет скрыто), после чего появится окно.

установка apache

Рис.1 Установка веб сервера Apache

Далее кликаем на кнопку "Next", появляется следующее окно с лицензионным соглашением.

установка apache

Рис.2 Установка веб сервера Apache

Выбираем: "I accept the terms in the agreement", чтобы принять лицензионное соглашение. В следующем шаге должно появиться новое окно с описанием веб серрвера Apache.

установка apache

Рис.3 Установка веб сервера Apache

Кликаем на кнопку “Next” и продолжаем установку. Далее появляется следующие окно.

установка apache

Рис.4 Установка веб сервера Apache

В этом окне нам нужно ввести информацию о нашем веб сервере. Заполняем поля следующим образом:
Network domain: localhost
Server name: localhost
Administrator’s email: admin@ localhost

установка apache

Рис.5 Установка веб сервера Apache

После того как вы заполнили все поля, кликаем на кнопку “Next”. Должно появиться новое окно.

установка apache

Рис.6 Установка веб сервера Apache

В этом окне вам предлагают выбрать тип установки, полную (Typical) и выборочную(Custom). Выбираем “Custom” и продолжаем установку.

установка apache

Рис.7 Установка веб сервера Apache

В следующем шаге вам нужно выбрать куда устанавливать, а также дополнительные библиотеки. Кликаем на против креcтика “Build Headers and Libraries”, в выпадающем списке выбираем “This features will be installed on local hard drive” Потом выбираем папку, куда устанавливать Apache. Вместо C:\Program Files (X86)\Apache Software Foundation\Apache 2.2 указываем C:\server\Apache2\ и кликаем на сново на кнопк “Next

установка apache

Рис.8 Установка веб сервера Apache

Должно появиться заключительное окно.

установка apache

Рис.9 Установка веб сервера Apache

Кликаем на кнопку “Install”, чтобы начать процесс установки.

установка apache

Рис.10 Установка веб сервера Apache

Ждем завершения процесса установки, после чего должно появиться окно с сообщение, что процесс установки завершен.

установка apache

Рис.11 Установка веб сервера Apache

Кликаем на кнопку “Finish” и завершаем установку. Всё, теперь установка веб сервера завершена. Чтобы убедиться в этом, смотрим в правом нижнем углу, вы должны увидеть значок, как показано на рисунке 12.

установка apache

Рис.12 Установка веб сервера Apache

Если этот так, значит веб сервер запущен как служба. Если по какой-либо причине Apache не был запущен, то возможная из причин, что 80 порт занят другой программой. Решить проблему, можно отключив программу, которая занимает 80 порт. Чтобы это выяснить, набираем в командной строке:

netstat -o -n -a | findstr 0.0:80

установка apache

Рис.13 Установка веб сервера Apache

Очень часто 80 порт занимает программы Skype Если '80 порт занимает это так, отключите в настройках использование в качестве альтернативных портов 80 и 443 (Инструменты -> Настройки -> Расширенный настройки -> Соединение -> снимаем галочку (Использовать порты 80 и 443 в качестве альтернативных)

Проверяем работоспособность установленого веб сервера. Открываем браузер и набираем в адресной строке http://localhost или http://127.0.0.1 Если вы видите, тоже самое, что на рисунке 14. Поздравляю, ваш веб сервер установлен удачно!

установка apache

Рис.14 Установка веб сервера Apache

Настройка веб-сервера Apache

Теперь нам осталось настроить Apache. Открываем в блокноте файл конфигурации Apache httpd.conf, который лежит в папке C:\server\Apache2\conf Стираем в нём всё и вписываем следующие:

установка apache

Рис.15 Установка веб сервера Apache

 
 
# Количество потоков, созданных каждым дочерним процессом.
ThreadsPerChild 25
 
# Количество запросов, которое должен обработать дочерний процесс Apache 
MaxRequestsPerChild  0
 
# Величина таймаута для сервера
Timeout 300
 
# Корневая папка веб сервера
ServerRoot "c:/server/Apache2"
 
# Порт, который слушает наш веб сервер
Listen 80
 
# Модули
LoadModule actions_module modules/mod_actions.so
LoadModule alias_module modules/mod_alias.so
LoadModule asis_module modules/mod_asis.so
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule authn_default_module modules/mod_authn_default.so
LoadModule authn_file_module modules/mod_authn_file.so
LoadModule authz_default_module modules/mod_authz_default.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_user_module modules/mod_authz_user.so
LoadModule autoindex_module modules/mod_autoindex.so
LoadModule cgi_module modules/mod_cgi.so
LoadModule dir_module modules/mod_dir.so
LoadModule env_module modules/mod_env.so
LoadModule imagemap_module modules/mod_imagemap.so
LoadModule include_module modules/mod_include.so
LoadModule isapi_module modules/mod_isapi.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule mime_module modules/mod_mime.so
LoadModule negotiation_module modules/mod_negotiation.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule ssl_module modules/mod_ssl.so
LoadModule userdir_module modules/mod_userdir.so
 
# Имя сервера
ServerName localhost
 
# Корневая папка для веб документов
DocumentRoot "c:/server/Apache2/htdocs"
 
# Директива правил безопасности.

    Options Includes Indexes FollowSymLinks
    AllowOverride All
    Order deny,allow
    Allow from all
    Satisfy all

 
# E-mail администратора
ServerAdmin admin@localhost
 
# Индексные файлы
DirectoryIndex index.htm index.html index.shtm index.shtml index.php index.php4 index.php5
 
# Тип заголовков

    TypesConfig conf/mime.types
    AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz
    AddHandler cgi-script .cgi .pl .py
    AddType application/x-httpd-php .php .php5 .phtml
    AddType text/html .shtml
    AddOutputFilter INCLUDES .shtml .html

 
# Закрываем доступ к файлам конфигурации (.htaccess) и паролей
"^\.ht">
    Order allow,deny
    Deny from all

 
# Файл отчёта с ошибками
ErrorLog logs/error.log
 
# Обработка ошибок
LogLevel warn
 
# Шаблон записи строки в файл отчёта

    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
    LogFormat "%h %l %u %t \"%r\" %>s %b" common
 
    
      LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
    
 
    CustomLog logs/access.log common
 
    #CustomLog logs/access.log combined

 
# Тип всех документов - текстовый
DefaultType text/html
 
# Дополнительные файлы конфигуразии веб сервера
Include conf/extra/httpd-autoindex.conf
Include conf/extra/httpd-vhosts.conf
Include conf/extra/httpd-manual.conf
 
# Модуль обеспечивающий работу по протоколу HTTPS

SSLRandomSeed startup builtin
SSLRandomSeed connect builtin

 
# Модуль Мультиобработки
Win32DisableAcceptEx On
 

Сохраняем и закрываем файл httpd.conf После того как вы внесли изменения в основной конфигурационный файл, время создать виртуальный хост. Заходим в папку C:\server и создаём в ней папку home.

установка apache

Рис.16 Установка веб сервера Apache

В папке home папку localhost, в которой создаём ещё 3 паки cgi-bin, logs. В папке www, будут храниться php, html и другие файлы витального хоста. В папке cgi-bin, будут храниться perl скрипты. В папке log, логи веб сервера. Cодержимое папки localhost выглядит так, как показано на рисунке

установка apache

Рис.17 Установка веб сервера Apache

Теперь заходим в папку C:\server\Apache2\conf\extra и открываем в блокноте файл httpd-vhosts.conf (расширение .conf скрыто) прописываем туда виртуальные хосты. Удаляем содержимое этого файла и вписываем следующие.

 
#localhost
NameVirtualHost 127.0.0.1:80
80>
  DocumentRoot "C:/server/home/localhost/www"  
  ServerName "localhost"
  ServerAlias "www.localhost" "localhost" 
  ScriptAlias /cgi-bin/ "C:/server/home/localhost/cgi-bin/"  
  CustomLog "C:/server/home/localhost/logs/access.log" common
  ErrorLog "C:/server/home/localhost/logs/error.log" 

 

Сохраняем и закрываем httpd-vhosts.conf Перезагружаем Apache, чтобы изменения вступили в силу. Для этого кликните левой кнопкой мыши в правом нижнем углу на значок “Apache Service Monotor”, а затем в выпадающем списке выберите “Restart

Установка PHP итепритатора

Для того, чтобы ваш веб сервер обрабатывал php файлы, необходимо установить интопритатор php файлов.

Установка PHP итепритатора

Рис.1 Установка PHP итепритатора

Установка PHP возможна двумя вариантами: как модуль Apache и как внешнее CGI-приложение. Мы выбираем первый вариант, потому что PHP в качестве модуля немного повышает быстродействие, так как модуль PHP загружается один раз при запуске Web-сервера.

В папке C:\server создаём папку php для файлов php дистрибутва. Скачивам архив с дистрибудивом php php5-4-25.zip себе на локальный компьютер и распаковываем содержимое архива в папку C:\server\php Теперь необходимо сообщить Apache о наличие установленного php. Снова открываем уже знакомый файл Apache httpd.conf и добавляем туда эти строчки:

 
PHPIniDir "C:/server/php5/" 
LoadModule php5_module "C:/server/php/php5apache2_2.dll"
 

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

 
echo "Hello, World!";
?>
 

Установка PHP интерпретатора

Рис.2 Установка PHP интерпретатора

Даём имя index.php и сохраняем в папке C:\server\home\localhost\www

Проверяем, если PHP итерпритатор установлен правильно, то в окне своего браузера, набрав в адресной строке http://localhost/index.php, вы увидите сообщение, как показано на рисунке 3.

Установка PHP интерпретатора

Рис.3 Установка PHP итепритатора