Forum Webscript.Ru
Программирование => Perl => Тема начата: 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...
-
Метод param, когда это требуется, возвращает указатель на файл связанный(bless) с классом, где перебиты(overload) операции "" и cmp.
-
ondr
Это я знаю, хотелось малой кровью...
Но не очень-то и хотелось...
-
Малой кровью не получится. Относительно объекта класса, кроме указателя ничего хранить не получится, а надо, и прийдётся реализовывать "как-нибудь" вручную.
-
ondr
Да можно просто реализовать, возвращая не переменную, а ссылку на хеш:
{
name => \'name\',
handle => \'IO::File::blablabla\',
}
Просто хочется наглядней... а то чем дальше тем больше скрипт напоминает одну большую ссылку... ;)
-
Я описывал именно вариант, используемый в param()
-
ondr
Да в принципе, уже не важно...
Что-то навеяло очередной лесопед состряпать в плане обработки данных из формы...
Дабы не "перелопачивать" методы используемые в скриптах, решил сделать внешне как CGI, трабла только с FILEHANDLE возникла...
Но впрочем, скриптов с upload у меня не так много, завел дополнительный метод ...->file(\'field_name\'); который возвращает то что нужно...
-
Phoinix:
Что-то навеяло очередной лесопед состряпать в плане обработки данных из формы...
цель?
-
ondr
Не поверишь - душа просит экзотики
Это просто для себя, а то уже забыл в каком виде данные приходят...
P.S. И ты знаешь... ничего даже получилось, несмотря на то что всего 130 строк...
-
ясно..