Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: разработка для Web > не обрабатывается ввод модулем CGI


Автор: everyone 26.9.2004, 12:53
В руководстве по CGI ясно написано что строка:

Код
$query=new CGI;


[b]проанализирует ввод полученный любым из методов и сохранит переданные значения в объекте Perl[b]. В данном случае, я полагаю им является скаляр $query.

Но при выводе этого самого объекта, самым что ни есть примитивным образом:

Код
print $query; # :)


получается лишь шестнадцатеричное число, непонятно откуда взявшееся smile.gif

к примеру вот так:
Цитата
CGI=HASH(0x224fa8) #или любое другое...


То же самое у меня получалось и в каком-то другом случае - без обработки ввода, но тогда я не стал ломать голову (тот код так и не отыскал).
Кто-нибудь знает что это за число? И как обработать ввод этим модулем, может проще делать всё "в ручную"?

Автор: dimes 27.9.2004, 09:01
1. ООП подход
Код

use CGI;
my $query=new CGI;

# Вернет имена всех переданных элементов
my @all_params=$query->param();

# Вернет значение выбранного элемента
my $aa=$query->param('aa');


2. Функциональный
Код

use CGI qw(param);

# Вернет имена всех переданных элементов
my @all_params=param();

# Вернет значение выбранного элемента
my $aa=param('aa');


Особенности:
1. Значения возращаемые param('...') уже рапакованны в изначальный вид
2. Не важен метод передачи GET или POST
3. Если переданно 2 элемента с одинаковыми именами (aa=12&aa=qw) то
param('aa') вернет массив ('12','qw')

Там есть еще одна полезная функция cookie.
А вооще почитай perldoc CGI там много чего полезного

Автор: GoodBoy 27.9.2004, 10:50
Цитата(everyone @ 26.9.2004, 13:53)
В руководстве по CGI ясно написано что строка:

Код
$query=new CGI;


проанализирует ввод полученный любым из методов и сохранит переданные значения в объекте Perl. В данном случае, я полагаю им является скаляр $query.

Но при выводе этого самого объекта, самым что ни есть примитивным образом:

Код
print $query; # :)


получается лишь шестнадцатеричное число, непонятно откуда взявшееся smile.gif

к примеру вот так:
Цитата
CGI=HASH(0x224fa8) #или любое другое...


То же самое у меня получалось и в каком-то другом случае - без обработки ввода, но тогда я не стал ломать голову (тот код так и не отыскал).
Кто-нибудь знает что это за число? И как обработать ввод этим модулем, может проще делать всё "в ручную"?


Так и должно быть!!! При таком варианте (print $query;) тебе выводится АДРЕС, по которому располагается в памяти сам объект!!! Т. к. в Перле (как и в С/С++) переменная объекта - это ссылка на него.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)