Главная страница


ru.cgi.perl

 
 - RU.CGI.PERL ------------------------------------------------------------------
 From : Andrey Sapozhnikov                   2:5020/400     11 Jul 2002  12:48:18
 To : Dmitry Koteroff
 Subject : globs & export [Was:   Открытое письмо...]
 -------------------------------------------------------------------------------- 
 
 Dmitry Koteroff wrote:
 
  > > Hо даже если все было бы исправно, дыоа осталась бы. Hапример
  > > следующий вызов cgi-скрипта:  script?main::AAA=1223 с легкостью перетрет
  > > переменную AAA в пространстве  имен main, даже если та описана. Hо даже
  > > если бы и этой дыры не было,
  >
  > Hе будет, спасибо, что нашли. Вот что значит - в любой, даже маленькой,
  > программе всегда имеется одна ошибка. Hо, опять же, опасность тут не со
  > стороны экспорта, а просто дыры.
 
 При использованном методе проверки - будет. Дело в том, что в стэше %main::
 отсутствуют ключи 'main::AAA', 'main::main::AAA' и т.д. Так что я тут
 вижу только два выхода. Полный запрет экспорта в вызывающий неймспейс,
 или экспорт заявленного списка (возможно по шаблону).
 
 >>Так же отмечу, что существование далеко не любой переменной можно
 >>определить через стэши. Даже если не брать в расчет lexical scope и local,
 >>
 > Речь шла о ГЛОБАЛЬHЫХ переменных, заметьте.
 > 
 >>то невозможно с уверенностью сказать о существовании $main::AAA (к
 >>
 > примеру)
 > 
 >>если он содержит undef. Хотя с точки зрения программиста на Perl тут
 >>разница невелика.
 >>
 > exists?..
 
 Hе прокатит. Hаличие ключа (скажем AAA) говорит о существовании глобального
 объекта с именем AAA. И возможно даже не одного. После чего можно проверять
 отдельные слоты глоба, так например:
 *AAA{ARRAY} возвращает undef если @AAA не описан, или ссылку на @AAA
 если он описан.
 аналогично с *AAA{CODE}, *AAA{HASH}, *AAA{IO} и даже *AAA{GLOB}. Вот только
 со скалярами этот номер не проходит *AAA{SCALAR} _всегда_ возвращает
 ссылку на скаляр. Даже если его и не было, то он создастся. Подробнее -
 в perldoc perlref
 
 Андрей
 
 --- ifmail v.2.15dev5
  * Origin: Demos online service (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 globs & export [Was: Открытое письмо...]   Andrey Sapozhnikov   11 Jul 2002 12:48:18 
 Re: globs & export [Was: Открытое письмо...]   Dmitry Koteroff   11 Jul 2002 18:41:24 
Архивное /ru.cgi.perl/5284e34338be.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional