Автор Тема: Странность с хедером и ещё...  (Прочитано 5987 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн metton

  • access granted
  • Старожил
  • ****
  • Сообщений: 320
  • +0/-0
  • 2
    • Просмотр профиля
    • http://bluejack.ru/
Странность с хедером и ещё...
« : 23 Августа 2003, 03:43:20 »
странность с хедером...
Почему такой код не выдаёт ошибки 500?!

#!/usr/bin/perl -w

use strict;

print qq{
Content-Type: text/html};

Он просто выводит Content-Type: text/html
Кто же посылает хедер?

А вот если оператор print переписать так:
print qq{Content-Type: text/html};
то выводится долгожданное (:)) сообщение об ошибке...


...и ещё...
Что возвращает cookie() (модуля CGI) если ей передать значение substr($str,0,-1) при том что $str - не опеределено (undef).
Вот пример.
print substr(undef,0,-1);
print cookie(substr(undef,0,-1));
Почему если использовать только первую строку - выдаётся только предупреждение, а если вторую - ошибка Modification of a read-only value attempted at e:\\my_soft\\perl\\cgi\\cgi-bin\\LIST18~3.CGI line 52.

ЗЫ: никакой практической ценности этот пример не несёт - просто получилось так, что то, что передавалось substr было undef и я долго не мог понять то, что я и спрашиваю...
 BlueJacking среди нас

Оффлайн metton

  • access granted
  • Старожил
  • ****
  • Сообщений: 320
  • +0/-0
  • 2
    • Просмотр профиля
    • http://bluejack.ru/
Странность с хедером и ещё...
« Ответ #1 : 25 Августа 2003, 21:50:10 »
Ответьте кто-нибудь, плз.
 BlueJacking среди нас

Оффлайн arto

  • Ветеран
  • *****
  • Сообщений: 699
  • +0/-0
  • 2
    • Просмотр профиля
Странность с хедером и ещё...
« Ответ #2 : 25 Августа 2003, 23:59:50 »
print "Content-Type: text/plain\\n\\n";
print "test"

Оффлайн metton

  • access granted
  • Старожил
  • ****
  • Сообщений: 320
  • +0/-0
  • 2
    • Просмотр профиля
    • http://bluejack.ru/
Странность с хедером и ещё...
« Ответ #3 : 26 Августа 2003, 00:14:33 »
2arto
И что??!
Ты вопрос внимательно читал?
 BlueJacking среди нас

Оффлайн Wyclef

  • hello_worlder
  • Старожил
  • ****
  • Сообщений: 307
  • +0/-0
  • 2
    • Просмотр профиля
    • http://thug.narod.ru
Странность с хедером и ещё...
« Ответ #4 : 26 Августа 2003, 10:04:24 »
Цитировать
metton:
Почему такой код не выдаёт ошибки 500?!


Если посудить логически, то получается, что в первом случае реальный content-type как бы задан и равен undef, поле его вывода, как надо идет пусктая строка. И вывод далее Content-Type:... считается обычной строкой... А во втором выводе нет пустой строки после явно заданного заголовка.

Цитировать
Что возвращает cookie()


Наверно правильнее было бы написать:
print substr(cookie(\'cookname\'),0,-1); #cookie(\'cookname\') = undef
It\'s nice to be important, but it\'s more important to be nice!

Оффлайн metton

  • access granted
  • Старожил
  • ****
  • Сообщений: 320
  • +0/-0
  • 2
    • Просмотр профиля
    • http://bluejack.ru/
Странность с хедером и ещё...
« Ответ #5 : 26 Августа 2003, 17:53:22 »
2Wyclef
Да. Со 2-ым вариантом стормозил. НО КТО ВЫВОДИТ ХЕДЕР В ПЕРВОМ??!!

Насчёт куков - именно так как я сказал. Просто было нужно обрезать строку и передать её как имя cookie()-у.
Вопрос чисто теоретический... Просто интересно.
 BlueJacking среди нас

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Странность с хедером и ещё...
« Ответ #6 : 26 Августа 2003, 18:17:30 »
perl за тебя. он иногда исправляет неряшливых программистов.
только нельзя на это пологаться.
или есть какие еще мнения?
The documentations is your friend

Оффлайн mike

  • ProPerl\'er
  • Старожил
  • ****
  • Сообщений: 435
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Странность с хедером и ещё...
« Ответ #7 : 26 Августа 2003, 19:58:26 »
Цитировать
NeoNox:
или есть какие еще мнения?

Аналогично - веб-сервер, но полагаться на это по-прежнему нельзя.
[ основной браузер когда-то был, теперь попробуй разберись =]

Оффлайн Wyclef

  • hello_worlder
  • Старожил
  • ****
  • Сообщений: 307
  • +0/-0
  • 2
    • Просмотр профиля
    • http://thug.narod.ru
Странность с хедером и ещё...
« Ответ #8 : 26 Августа 2003, 20:03:05 »
metton:
Так как у тебя написано - будет ошибка, а если имя куки в переменной - будет аналогичный варнинг...
Цитировать
[b]perldoc perltrap[/b]:
(Constants)
perl 4 lets you modify constants:

    $foo = "x";
    &mod($foo);
    for ($x = 0; $x < 3; $x++) {
        &mod("a");
    }
    sub mod {
        print "before: $_[0]";
        $_[0] = "m";
        print "  after: $_[0]\\n";
    }

    # [b]perl4[/b]:
    # before: x  after: m
    # before: a  after: m
    # before: m  after: m
    # before: m  after: m

    # [b]Perl5[/b]:
    # before: x  after: m
    # Modification of a read-only value attempted at foo.pl line 12.
    # before: a
It\'s nice to be important, but it\'s more important to be nice!

Оффлайн metton

  • access granted
  • Старожил
  • ****
  • Сообщений: 320
  • +0/-0
  • 2
    • Просмотр профиля
    • http://bluejack.ru/
Странность с хедером и ещё...
« Ответ #9 : 29 Августа 2003, 01:21:44 »
2Wyclef
Про куки:
Я просто не могу понять, ЧТО пытается модифицировать это read-only value?

Про хедеры:
И всё-таки ЧТО в данном случае выводит хедеры?
Т.е. почему именно в данной конструкции:
print qq{
Content-Type: text/html};
допускаются поблажки?
Может, это какое-то свойство оператора qq?
 BlueJacking среди нас

Оффлайн Wyclef

  • hello_worlder
  • Старожил
  • ****
  • Сообщений: 307
  • +0/-0
  • 2
    • Просмотр профиля
    • http://thug.narod.ru
Странность с хедером и ещё...
« Ответ #10 : 29 Августа 2003, 10:28:06 »
metton
Perl ругается при попытке обрезать undef, ИМХО...
It\'s nice to be important, but it\'s more important to be nice!

Оффлайн metton

  • access granted
  • Старожил
  • ****
  • Сообщений: 320
  • +0/-0
  • 2
    • Просмотр профиля
    • http://bluejack.ru/
Странность с хедером и ещё...
« Ответ #11 : 29 Августа 2003, 12:29:55 »
2Wyclef
Так почему же он ругается только если обрезать внутри куки?
Если же отвдельно(первая строка), то не ругается же.
 BlueJacking среди нас

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Странность с хедером и ещё...
« Ответ #12 : 29 Августа 2003, 12:45:21 »
perldoc perldiag:
Modification of a read‐only value attempted
           (F) You tried, directly or indirectly, to change the value of a
           constant.

Да потому что это уже сформированый обьект.
The documentations is your friend

Оффлайн metton

  • access granted
  • Старожил
  • ****
  • Сообщений: 320
  • +0/-0
  • 2
    • Просмотр профиля
    • http://bluejack.ru/
Странность с хедером и ещё...
« Ответ #13 : 29 Августа 2003, 14:13:48 »
2NeoNox
Не понял. Можешь пояснить (насчёт объекта)?
 BlueJacking среди нас

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28