Автор Тема: Особый FILEHANDLE из метода объекта:  (Прочитано 4486 раз)

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

Оффлайн Phoinix

  • RW
  • Ветеран
  • *****
  • Сообщений: 1097
  • +0/-0
  • 2
    • Просмотр профиля
    • http://phoinix.ucoz.ru
Особый FILEHANDLE из метода объекта:
« : 03 Марта 2005, 16:52:42 »
Никак не могу сделать такую фичу как в модуле CGI, что если переданный параметр файл, то метод param возвращает открытый FILEHANDLE значение которого в скалярном контенте - имя файла:

Так, не получается (в упрощенном варианте, проверки вырезал):

sub get_file {
    no strict;
    my ($self, $name) = @_;
    ...
    my $value = $self->{\'files\'}->{\'name\'};
    ...
    open ($value, \'<\', $value);
    return $value
}

T.e. значение возвращается, но не как FILEHANDLE

Пробовал использовать IO::File, но тогда возвращается имя объекта, которое можно использовать как FILEHANDLE...

Оффлайн ondr

  • Модератор
  • Глобальный модератор
  • Старожил
  • *****
  • Сообщений: 440
  • +0/-0
  • 0
    • Просмотр профиля
Особый FILEHANDLE из метода объекта:
« Ответ #1 : 03 Марта 2005, 18:29:36 »
Метод param, когда это требуется, возвращает указатель на файл связанный(bless) с классом, где перебиты(overload) операции "" и cmp.
0 OK, 0:1

Оффлайн Phoinix

  • RW
  • Ветеран
  • *****
  • Сообщений: 1097
  • +0/-0
  • 2
    • Просмотр профиля
    • http://phoinix.ucoz.ru
Особый FILEHANDLE из метода объекта:
« Ответ #2 : 03 Марта 2005, 21:01:29 »
ondr
Это я знаю, хотелось малой кровью...
Но не очень-то и хотелось...

Оффлайн ondr

  • Модератор
  • Глобальный модератор
  • Старожил
  • *****
  • Сообщений: 440
  • +0/-0
  • 0
    • Просмотр профиля
Особый FILEHANDLE из метода объекта:
« Ответ #3 : 03 Марта 2005, 21:23:16 »
Малой кровью не получится. Относительно объекта класса, кроме указателя ничего хранить не получится, а надо, и прийдётся реализовывать "как-нибудь" вручную.
0 OK, 0:1

Оффлайн Phoinix

  • RW
  • Ветеран
  • *****
  • Сообщений: 1097
  • +0/-0
  • 2
    • Просмотр профиля
    • http://phoinix.ucoz.ru
Особый FILEHANDLE из метода объекта:
« Ответ #4 : 03 Марта 2005, 21:29:18 »
ondr
Да можно просто реализовать, возвращая не переменную, а ссылку на хеш:

{
name => \'name\',
handle => \'IO::File::blablabla\',
}

Просто хочется наглядней... а то чем дальше тем больше скрипт напоминает одну большую ссылку... ;)

Оффлайн ondr

  • Модератор
  • Глобальный модератор
  • Старожил
  • *****
  • Сообщений: 440
  • +0/-0
  • 0
    • Просмотр профиля
Особый FILEHANDLE из метода объекта:
« Ответ #5 : 03 Марта 2005, 21:49:18 »
Я описывал именно вариант, используемый в param()
0 OK, 0:1

Оффлайн Phoinix

  • RW
  • Ветеран
  • *****
  • Сообщений: 1097
  • +0/-0
  • 2
    • Просмотр профиля
    • http://phoinix.ucoz.ru
Особый FILEHANDLE из метода объекта:
« Ответ #6 : 03 Марта 2005, 21:58:04 »
ondr
Да в принципе, уже не важно...
Что-то навеяло очередной лесопед состряпать в плане обработки данных из формы...
Дабы не "перелопачивать" методы используемые в скриптах, решил сделать внешне как CGI, трабла только с FILEHANDLE возникла...

Но впрочем, скриптов с upload у меня не так много, завел дополнительный метод ...->file(\'field_name\'); который возвращает то что нужно...

Оффлайн ondr

  • Модератор
  • Глобальный модератор
  • Старожил
  • *****
  • Сообщений: 440
  • +0/-0
  • 0
    • Просмотр профиля
Особый FILEHANDLE из метода объекта:
« Ответ #7 : 03 Марта 2005, 22:00:03 »
Цитировать
Phoinix:
Что-то навеяло очередной лесопед состряпать в плане обработки данных из формы...


цель?
0 OK, 0:1

Оффлайн Phoinix

  • RW
  • Ветеран
  • *****
  • Сообщений: 1097
  • +0/-0
  • 2
    • Просмотр профиля
    • http://phoinix.ucoz.ru
Особый FILEHANDLE из метода объекта:
« Ответ #8 : 03 Марта 2005, 22:03:58 »
ondr

Не поверишь - душа просит экзотики

Это просто для себя, а то уже забыл в каком виде данные приходят...

P.S. И ты знаешь... ничего даже получилось, несмотря на то что всего 130 строк...

Оффлайн ondr

  • Модератор
  • Глобальный модератор
  • Старожил
  • *****
  • Сообщений: 440
  • +0/-0
  • 0
    • Просмотр профиля
Особый FILEHANDLE из метода объекта:
« Ответ #9 : 03 Марта 2005, 22:06:08 »
ясно..
0 OK, 0:1

 

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