Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не работает проверка условия, только начинаю изучать перл... 
:(
    Опции темы
stalker2000
Дата 20.1.2014, 13:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 29.7.2010

Репутация: нет
Всего: нет



Добрый день. Стоит простейшая задача: проверить урл и в случае несоответствия заданному перенаправить в нужное место. Для начала всё только на экран, без редиректов.
Пишу:
Код

#!/usr/bin/perl

$IWE_cmdl = $ENV{REQUEST_URI};

print "Content-type:text/html\r\n\r\n<pre>";
$IWE_cmdl = "/%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B3%D0%B5%D1%80%D0%B1%D0%B0/";
#$IWE_cmdl = "/создание_герба/";
print "$IWE_cmdl\n";

if($IWE_cmdl ne /^\/%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B3%D0%B5%D1%80%D0%B1%D0%B0/)
#if($IWE_cmdl ne /^\/создание_герба/)
{
  print "Status: 301 Moved Permanently\n";
  print "Location: http://site/%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B3%D0%B5%D1%80%D0%B1%D0%B0/\n\n";
  exit;
}
print "yes, here!";

Результат: всегда выполняется блок if. Подскажите, в чём ошибка?  smile 
PM MAIL   Вверх
krypt3r
Дата 20.1.2014, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 359
Регистрация: 9.6.2009

Репутация: нет
Всего: 16



ne — оператор сравнения двух строк. Он не работает с регулярками.
PS. Не вижу use strict
PM MAIL   Вверх
Bulat
Дата 20.1.2014, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


татарский Нео
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 22.3.2006
Где: Альметьевск

Репутация: нет
Всего: 57



вместо ne, ставь !~ - то же самое что и ne, и !=, и <>, только для регэкспов


--------------------
менеджер по кодеврайтингу  smile 
PM MAIL WWW   Вверх
stalker2000
Дата 20.1.2014, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 29.7.2010

Репутация: нет
Всего: нет



Помогло, спасибо. Тяжковато вначале, в трёх соснах путаешься )))

Пошел читать про use strict smile
PM MAIL   Вверх
svlary
Дата 12.8.2014, 19:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 207
Регистрация: 8.9.2009

Репутация: нет
Всего: 4



У меня задача ещё проще.... Но тоже - не работает проверка условия! Я в полном непонимании... Итак, есть простейший условный оператор:

Код

if ($wrk1 ne wrk2) {
    no_name("Введите название дня недели по русски -$wrk1-$wrk2-");
}


Внутри CGI скрипта. Даже если строки совершенно одинакоые, То if говорит, что они РАЗНЫЕ!. Функция no_name (...)  создаёт html документ, в котором генерируется такой код:

Код

<title>Введите название дня недели по русски -Вторник-Вторник-</title>


Даже самым невооружённым глазом видно, что строки - совершенно одинаковые! Почему, при этом, услови ne есть истина - я не понимаю. Есть маленькая зацепка...  Переменную $wrk1 скрипт выбирает из запроса html тега <forma>,

Код

$wrk1 = $FORM{'weekday'};
chomp($wrk1);


а переменная $wrk2  инициализируется константой из самого текста скрипта:

Код

@weekday_name = ("Воскресенье", "Понедельник", "Вторник", "Среда", "Четверг", "Пятница", "Суббота");
$weekday_num = (localtime) [6];
$wrk2 = $weekday_name[$weekday_num];
chomp($wrk2);


Следует заметить, что и сам скрипт и html форма набраны в кодировке utf-8 и эта кодировка явнв прописана и на страничке формы и на генерируемой скриптом страничке.

Что я только не делал!!!  В разных комбинациях использовал use locale; /  use utf8; / use encoding 'utf8'; / use feature 'unicode_strings'; / use Encode 'decode_utf8'; и тд. Ставил  chomp и убирал... Использовал lc() и  \L...

Ничего не помогает! В чём может быть дело ?!
PM MAIL   Вверх
Bulat
Дата 13.8.2014, 08:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


татарский Нео
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 22.3.2006
Где: Альметьевск

Репутация: нет
Всего: 57



Цитата(svlary @  12.8.2014,  19:20 Найти цитируемый пост)
if ($wrk1 ne wrk2) {


так может $wrk ne $wrk2 ?? 


--------------------
менеджер по кодеврайтингу  smile 
PM MAIL WWW   Вверх
svlary
Дата 13.8.2014, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 207
Регистрация: 8.9.2009

Репутация: нет
Всего: 4



Цитата(Bulat @  13.8.2014,  08:16 Найти цитируемый пост)
так может $wrk ne $wrk2 ??  


БЛ-И-И-И-И-Н !!!!

Верно говорят, что труднее всего искать самые глупые ошибки smile!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl: CGI программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к CGI программированию
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", качать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: разработка для Web | Следующая тема »


 




[ Время генерации скрипта: 0.1222 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.