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


Автор: Anarki 25.5.2005, 20:44
Вот, значит куски кода
Код

sub update_form {
my($fid,$cid,$fields,$defaults,$field_ids) = @_;
print $fields;
# et cetera
}
update_form($q->param("id"),$q->param("cid"),\{$q->param("fields")},\{$q->param("defaults")},\{$q->param("fids")});
# $q - object CGI, fields, defaults, fids v $q->param - massivy

$q - объект ЦГИ, $q->param("fields ... defaults ... fids - массивы, выводит
print $fields; просто ссылку - REF(0x857dd28) О_о
В чём может быть трабла?

Автор: Anarki 25.5.2005, 22:09
Темку можно закрывать/удалять.

Автор: korob2001 26.5.2005, 00:29
Цитата

Темку можно закрывать/удалять.

Вообще-то, по нормальному не мешало бы выложить решение проблемы, даже если ты к ниму пришёл сам, да бы другие не спотыкались на тех же граблях. Но это конечно дело твоё, если не добавишь решение, тогда я её удалю, так как толку от такой темы мало.

Автор: Anarki 29.5.2005, 11:41
`Ошибка` была в этом \{$q->param("fields")} на самом деле это не просто ссылка на массив, а тут объект ($q) CGI. Поэтому надо было разыменовывать(разлинковывать) немного по-другому, вначале как ссылку на объект, потом на хеш и наконец как массив. Обычная невнимательность - я полагал что передаю в функцию указатель на массив.

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