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


ru.cgi.perl

 
 - RU.CGI.PERL ------------------------------------------------------------------
 From : Andrey Sapozhnikov                   2:5020/400     11 Jul 2002  21:15:11
 To : Dmitry Koteroff
 Subject : еще раз об экспорте   [Was: Открытое письмо...]
 -------------------------------------------------------------------------------- 
 
 Dmitry Koteroff wrote:
 
  > Hу так исправлю, что ж с того... Оно дело, дыра в реализации, а другая -
  > в идее.
 
 Тут ведь вот какая интересная закавырка получается. Есть два варианта,
 человек пишет аккуратно (используя use strict и соответственно объявляя
 все используемые переменные) или неаккуратно (без use strict и не объявляя).
 Теоретически вариант того, что человек объявляет все, но не пишет use strict
 существует, но практически он равен нулю. Ибо смысла нет просто в экономии
 одной строки. Так вот в первом варианте, выгоды от экспорта всех переменных
 в вызывающий неймспейс ему нет никакой (здесь и далее в примерах $a и $b -
 "внутренние" глобальные переменные скрипта, а $x и $y - импортированные
 из параметров):
 
 Вариант 1:
 
 use strict;
 our($x, $x);
 use CGI::WebIn (1);
 
 print "a=$a\n";
 
 выдаст ошибку "Global symbol "$a" requires explicit package name at ..."
 
 Вариант 2:
 
 use strict;
 our ($x, $x);
 use CGI::WebIn (1);
 our ($a, $b);
 
 print "a=$a\n";
 
 сработает, но требует явного перечисления всех импортируемых переменных,
 что делает его не более привлекательным чем, например:
 
 use strict;
 use vars qw($x $x);
 use CGI::WebIn;
 our ($a, $b) = @IN{'a', 'b'};
 
 либо пользоваться полными именами переменных:
 
 use strict;
 our ($x, $x);
 use CGI::WebIn;
 
 print "a=$main::a\n";
 
 что не только не короче работы с $IN{a}, но еще и может
 вызвать справедливый варнинг типа: "Name "main::a" used only once:
 possible typo at ..."
 
 В случае же когда автор не объявляет переменные (и не пользует strict) - не
 работает Ваша защита данных при экспорте.
 
 Андрей
 
 P.S.
 
 OFF3:
 
  > > Так у Вас это по историческим причинам (хотя релиз perl5 вышел
  > > еще в 1994 году) или Вам требуется именно cheat?
  >
  > По историческим.
 
 Восемь лет, более чем срок для того, чтоб избавиться от "тяжелого
 наследия". Описание переменных our Вы ведь быстро усвоили, а оно
 весьма свежее.
 
 OFF4:
 
  > >Дмитрий, этот модуль более стандартен чем Ваш.
  >
  > При чем тут "стандартность" моего модуля, простите? Речь же шла о том, что
  > его HЕТ у многих (если не сказать у большинства) хостеров.
 
 Так ведь и Вашего у большинства хостеров нет. Раз они смогли собрать Ваш,
 что мешает им собрать тот, от которого Ваш зависит? Благо сделать это даже
 проще, используя perl -MCPAN ...
 --- ifmail v.2.15dev5
  * Origin: Demos online service (2:5020/400)
 
 

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

 Тема:    Автор:    Дата:  
 еще раз об экспорте [Was: Открытое письмо...]   Andrey Sapozhnikov   11 Jul 2002 21:15:11 
 Re: еще раз об экспорте [Was: Открытое письмо...]   Dmitry Koteroff   11 Jul 2002 23:00:53 
 Re: еще раз об экспорте [Was: Открытое письмо...]   Andrey Sapozhnikov   12 Jul 2002 13:23:22 
 Re: еще раз об экспорте [Was: Открытое письмо...]   Dmitry Koteroff   13 Jul 2002 19:24:22 
 Re: еще раз об экспорте [Was: Открытое письмо...]   Dmitry Koteroff   13 Jul 2002 19:22:20 
 Re: еще раз об экспорте [Was: Открытое письмо...]   Artem Chuprina   13 Jul 2002 22:45:42 
 Re: еще раз об экспорте [Was: Открытое письмо...]   Dmitry Koteroff   14 Jul 2002 00:23:05 
 Re: еще раз об экспорте [Was: Открытое письмо...]   Artem Chuprina   14 Jul 2002 10:32:21 
 Re: еще раз об экспорте [Was: Открытое письмо...]   Andrey Sapozhnikov   15 Jul 2002 18:23:05 
 Re: еще раз об экспорте [Was: Открытое письмо...]   Dmitry Koteroff   15 Jul 2002 18:57:51 
 Re: еще раз об экспорте [Was: Открытое письмо...]   Andrey Sapozhnikov   15 Jul 2002 19:24:36 
Архивное /ru.cgi.perl/5284976f80b6.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional