|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Andrey Sapozhnikov 2:5020/400 23 Apr 2002 03:59:11 To : Artem Chuprina Subject : Re: UNIVERSAL::can и taint check -------------------------------------------------------------------------------- "Artem Chuprina" <ran@ice.ru> wrote in message news:slrnac8dbt.7as.ran@banquet.lan.ice.ru... > perl5 (revision 5.0 version 6 subversion 1). В perl5 (5.0 patchlevel 5 > subversion 3) работает. > > Код вида > > my $module = $1 if $ARGV[0] =~ /^(\w+)$/; > my $function = $1 if $ARGV[1] =~ /^(\w+)$/; > eval "require $module"; > return $module->can($function); > > но сложнее (пока в столь простых условиях добиться не удалось) не работает > (молча возвращает undef) под taint check. Вставал ли кто-нибудь на подобные > грабли, и если да, то где именно они лежат и как их обходят? При этом Hе могу воспроизвести ошибку. Подобный код у меня отрабатывает нормально и под 5.6.1 и под 5.7.3. Кстати, $module->can действительно может возвращать undef в случае если не существует package с именем $module (неожиданно, но _все_ классы наследники UNIVERSAL, даже пустые, без единого метода) или если метод $function неопределен. Может просто eval с ошибкой завершился (такого модуля нет) или имя модуля не совпадает с именем описанного в нем package? Андрей --- ifmail v.2.15dev5 * Origin: Demos online service (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/65777d5d1c1f.html, оценка из 5, голосов 10
|