Парсинг url получение параметров переменных в Perl из адресной строки аналог метода $_GET

Задача: вытащить из адресной строки параметры , например URL сайта.

Строка выглядит таким образом:

http://weblomaster.ru/cgi-bin/script.pl?url=http://google.com

чтобы вытащить url  в PHP существует ассоциативный массив параметров, переданных скрипту через URL, так называемый $_GET

$var = $_GET['url']; /* так передаем в php скрипту параметр из адресной строки */

в перле это можно сделать так:

use CGI ':standard';
my $url = param('url');

Если говорить о парсинге (потрошение) полученной переменной url, то для этого нужно воспользоваться функцией Перл URI, аналог функции php parse_url:

use URI;
my $parsed = URI->new($url);

полностью скрипт будет выглядеть так:

#!/usr/bin/perl
print "Content-type: text/plain\n\n"; # эта строка, в некоторых случаях,  поможет избежать ошибки error 500
use CGI ':standard';
my $url = param('url');
$url =~ s/[^-a-z0-9:\/\.\@]+//g; # регулярное выражение вырезающее ненужные символы , а именно все кроме латинских букв , цифр, точки, слеша, двоеточия, собаки и тире
use URI;
my $parsed = URI->new($url);
my $host = $parsed->host; # получаем хост преданного из адресной строки URL
print $host;

кроме хоста получаются и другие составные части url:

http://username:password@weblomaster.ru:80/cgi-bin/script.pl? id=1&arg=value#top

$parsed->scheme; # http, ftp, https – протокол
$parsed->port; # порт , если указан, например 80, 8080 для обычного или 443 для защищенного соединения, 21 для фтп и т.д.
$parsed->userinfo; # информация об авторизации, о пользователе, на фтп например username:password
$parsed->path; # путь до скрипта /cgi-bin/script.pl
$parsed->query; # переменные id=1&arg=value
$parsed->fragment; # фрагменты , всё что после знака номера top

К слову , если у Вас скрипт выдаёт ошибку 500 – проверьте права на файл (они должны быть 0755) и убедитесь что текстовый редактор не добавил лишних невидимых символов в конец каждой строки (такое может происходить в windows редакторах).
Откройте Ваш закаченный на фтп script.pl с помощью unix редакторов vi либо ee (в freeBSD):

vi /path/to/script.pl (распространенный текстовый редактор)

ee /path/to/script.pl (freeBSD редактор EE)

удалите лишние символы и сохраните файл

Опубликовано 23.11.2011 в 20:14 · Автор Вебдизайнеру, сисадмину, вебмастеру · Ссылка
Рубрики: Perl программирование · Теги: , , , , , , ,