Forum Webscript.Ru

Программирование => Perl => Тема начата: Phoinix от 03 Марта 2005, 16:52:42

Название: Особый FILEHANDLE из метода объекта:
Отправлено: Phoinix от 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...
Название: Особый FILEHANDLE из метода объекта:
Отправлено: ondr от 03 Марта 2005, 18:29:36
Метод param, когда это требуется, возвращает указатель на файл связанный(bless) с классом, где перебиты(overload) операции "" и cmp.
Название: Особый FILEHANDLE из метода объекта:
Отправлено: Phoinix от 03 Марта 2005, 21:01:29
ondr
Это я знаю, хотелось малой кровью...
Но не очень-то и хотелось...
Название: Особый FILEHANDLE из метода объекта:
Отправлено: ondr от 03 Марта 2005, 21:23:16
Малой кровью не получится. Относительно объекта класса, кроме указателя ничего хранить не получится, а надо, и прийдётся реализовывать "как-нибудь" вручную.
Название: Особый FILEHANDLE из метода объекта:
Отправлено: Phoinix от 03 Марта 2005, 21:29:18
ondr
Да можно просто реализовать, возвращая не переменную, а ссылку на хеш:

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

Просто хочется наглядней... а то чем дальше тем больше скрипт напоминает одну большую ссылку... ;)
Название: Особый FILEHANDLE из метода объекта:
Отправлено: ondr от 03 Марта 2005, 21:49:18
Я описывал именно вариант, используемый в param()
Название: Особый FILEHANDLE из метода объекта:
Отправлено: Phoinix от 03 Марта 2005, 21:58:04
ondr
Да в принципе, уже не важно...
Что-то навеяло очередной лесопед состряпать в плане обработки данных из формы...
Дабы не "перелопачивать" методы используемые в скриптах, решил сделать внешне как CGI, трабла только с FILEHANDLE возникла...

Но впрочем, скриптов с upload у меня не так много, завел дополнительный метод ...->file(\'field_name\'); который возвращает то что нужно...
Название: Особый FILEHANDLE из метода объекта:
Отправлено: ondr от 03 Марта 2005, 22:00:03
Цитировать
Phoinix:
Что-то навеяло очередной лесопед состряпать в плане обработки данных из формы...


цель?
Название: Особый FILEHANDLE из метода объекта:
Отправлено: Phoinix от 03 Марта 2005, 22:03:58
ondr

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

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

P.S. И ты знаешь... ничего даже получилось, несмотря на то что всего 130 строк...
Название: Особый FILEHANDLE из метода объекта:
Отправлено: ondr от 03 Марта 2005, 22:06:08
ясно..