afiskon 14.03.2010 16:24
Скрипты — Основы Perl. Часть 3 – use strict, ссылки и функции
Продолжение серии статей об основах программирования на Perl. В этой части речь пойдет обо всем, что нужно знать для написания функций. Думаю, в цикл войдет еще одна, максимум две части...
Попробуйте без my в 46-ой строке. Перед unless кстати, как я понимаю, точка с запятой там тоже не нужна.
И если поставить в 46-ой строке my $name;
а в 54-ой my $info = $envinfo{$name};
то ошибок целых 4 выскакивает.
а в 54-ой my $info = $envinfo{$name};
то ошибок целых 4 выскакивает.
Убери нафиг точку с запятой после my $envinfo{$name} = "...":
foreach $name (keys %ENV) {
my $envinfo{$name} = "Дополнительная переменная, определяемая этим сервером" unless exists $envinfo{$name};
}
my $envinfo{$name} = "Дополнительная переменная, определяемая этим сервером" unless exists $envinfo{$name};
}
Все бы ничего, да как-то вот тэг code вы использовать поленились...
Нее это я поленился. Раньше пост представлял из себя лишь первую строчку.
А я скопипастил всё целиком. Теги поставлю чуть позже.
А я скопипастил всё целиком. Теги поставлю чуть позже.
Давайте до понедельника она повесит в виде поста-ссылки, потом я скопирую ее целиком. Мне не хотелось бы, чтобы Google принял welinux за первоисточник.
Может быть есть тогда смысл настроить RPC на блоге? Оно бы само пингануло гугль и появилось бы в выдаче.
Ты ленту рсс фидбёрнера настрой, чтобы оно само пинговало гугль.
+ прикрути http://friendfeed.com и твиттер к ленте RSS - это значительно убыстрит индексацию.
+ прикрути http://friendfeed.com и твиттер к ленте RSS - это значительно убыстрит индексацию.
Да Гугл на самом деле все уже давно проиндексировал, за счет Twitter-а скорее всего. Теперь надо Яндекс подождать...
Вот, кстати вчера столкнулся с проблемой объявления переменных.
#!/usr/bin/perl -w
use strict;
my %envinfo = (
SERVER_SOFTWARE => "Программное обеспечение сервера",
SERVER_NAME => "Имя узла сервера или IP-фдрес",
GATEWAY_INTERFACE => "Версия CGI спецификации",
SERVER_PROTOCOL => "Имя протокола сервера",
SERVER_PORT => "Номер порта для сервера",
REQUEST_METHOD => "Метод HTTP-запроса",
PATH_INFO => "Дополнительная информация о пути",
PATH_TRANSLATED => "Конвертированная информация о пути",
DOCUMENT_ROOT => "Корневой каталог сервера",
SCRIPT_NAME => "Имя сценария",
QUERY_STRING => "Строка запроса",
REMOTE_HOST => "Имя узла клиента",
REMOTE_ADDR => "IP-адрес клиента",
AUTH_TYPE => "Метод аутентификации",
REMOTE_USER => "Аутентифицированное имя пользователя",
REMOTE_IDENT => "Удаленный пользователь",
CONTENT_TYPE => "Медиа-тип данных",
CONTENT_LENGHT => "Длина тела запроса",
HTTP_ACCEPT => "Медиа-типы данных, воспринимаемых клиентом",
HTTP_USER_AGENT => "Браузер клиента",
HTTP_REFERER => "URL страницы, с которой пришел пользователь",
HTTP_COOKIE => "Куки, посланные клиентом"
);
print "Content-type: text/html\n\n";
print "
<html>
<head>
<title>Список переменных окружения</title>
</head>
<body>
<h1>Переменные CGI окружения</h1>
<table border=1>
<tr>
<th>Имя переменной</th>
<th>Описание</th>
<th>Значение</th>
</tr>
";
my($name,$info);
foreach $name (keys %ENV) {
my $envinfo{$name} = "Дополнительная переменная, определяемая этим сервером";
unless exists $envinfo{$name};
}
foreach $name (sort keys %ENV) {
$info = $envinfo{$name};
my $value = $ENV{$name} || "<i>Не определено</i>";
print "<tr><td><b>$name</b></td><td>$info</td><td>$value</td></tr>\n";
}
print "</table>\n</body></html>\n";
и выдает вот такую ошибку:
info.cgi|49| syntax error near "$envinfo{"
info.cgi|57| syntax error near "}"
Код этот взял из учебника. В первоначальном варианте тут было 14 ошибок. Смог довести до такого состояния, но все равно не могу заставить работать.