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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Внешние переменные (main::) в модуле 
:(
    Опции темы
bronenos
Дата 30.12.2007, 10:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Скажите, что не так...
Фунцкия, из модуля jskit
Код

sub parseRequest
{
  my ($this, $in) = @_;

  print $in, ": ", ref $in, "\n"; /* Показывает в распечатке "::" */

  if (ref $in eq "HASH")
  {
    my %in = %{$in};
    $in{parseRequest($_)} = parseRequest($in{$_}) foreach (keys %in);
    return %in;
  }
  elsif (ref $in eq "ARRAY")
  {
    my @in = @{$in};
    for (my $i=0; $i<scalar(@in); $i++)
    {
      $in[$i] = parseRequest($in[$i]);
    }
    return @in;
  }
  elsif (!ref $in)
  {
    $in =~ s/%([a-z0-9]{2})/pack("C", hex($1))/eig;
    return $in;
  }
}


Вызов (из фунцкии того же модуля, jskit)
Код

my %P = parseRequest(%main::P);

%P - мой массив POST, писал руками (CGI не подходит по реализации), в остальных программах работает наура

Это сообщение отредактировал(а) bronenos - 30.12.2007, 10:26
PM MAIL   Вверх
Bikutoru
Дата 6.2.2008, 11:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Увлекающийся
**


Профиль
Группа: Участник
Сообщений: 522
Регистрация: 24.5.2005
Где: Москва

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



Судя по коду функция ожидает два параметра $this (судя по названию, это должна быть ссылка на вызывающий объект) и  $in (по логике массив с входными данными). При вызове функции передается хеш, который трактуется как массив входных параметров и получается, что при вызове в $this находится ключ первого элемента хеша, а в $in - значение первого элемента хеша. По логике, вызов должен быть примерно таким:
Код

my %P = $obj->parseRequest(\%main::P);



--------------------
Человек, словно в зеркале мир — многолик, 
Он ничтожен — и он же безмерно велик!
Омар Хайям
PM   Вверх
nitr
Дата 9.2.2008, 00:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

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



Думаю, Bikutoru, прав, и чтобы заработало можно исправить строчку

Код
my ($this, $in) = @_;

на
Код
my ($in) = @_;



--------------------
PM   Вверх
tishaishii
Дата 14.2.2008, 15:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Создатель
***


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

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



Код
parseRequest('main::P')

Код
my$in=shift;

PM MAIL ICQ Skype   Вверх
nitr
Дата 14.2.2008, 20:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

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



tishaishii, думаю это и так многим понятно, надеюсь и создателю темы.
Хоть shift, хоть $_[0], хоть @_ , можно my $in, а можно my ($in) smile Все от ситуации.


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


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

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


 




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


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

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