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


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Igor Trofimov                        2:5020/400     08 Jul 2003  23:57:46
 To : All
 Subject : мистика ;)
 -------------------------------------------------------------------------------- 
 
 Чайнику все непонятное кажется мистикой ;)
 
 Вкратце:  от того, вывожу ли я в скрипте одну лишнюю строчечку на экран,
           почему-то очень сильно зависит дальнейшая логика работы.
 
 Подробнее:
           имеется скрипт, который что-то вытаскивает из БД, кладет в хеш,
 снова что-то вытаскивает, сверяет с хешем и что-то делает в зависимости от
 того, нашел он в хеше значение на некотором ключе или нет.
 
 Выглядит кусок кода примерно так:
 
       while ( $stmt->fetch(\@row) == 0 )
       {
           my $SectionName = $row[1];
 
           if (exists($Parts{$SectionName}))
           {
                 $LocalCount2++;
                 ........
           }
       }
 
 Hа старом сервере все работало замечательно, LocalCount2 наращивалось как
 положено.
 
 После переноса на новый сервак все полетело в тар-тарары.
 (Супер-переносимость, блин!)
 А именно, отказалось работать выражение exists($Parts{$SectionName}).
 
 При этом выглядит это так:
   -- exists?
   -- нету такого.
   -- а ну-ка print $Parts{$SectionName} !
   -- да пожалуйста: ... тонна текста....
 
 Я почти всю голову сломал.
 
 В итоге "вылечил" это безобразие чудовищной строкой
 
           print "SectionName=$SectionName";
 
 перед  проверкой на существование.  Вот ведь бред! Это почему-то заставляет
 его нормально отрабатывать!!!
 
 При этом вариант
 
           print "SectionName=";
           print $SectionName";
 
 HЕ работает.  Чума.
 Также почему-то помогает предварительная конкатенация $SectionName с пустой
 строкой:
 
           $SectionName = $SectionName . '';
 
 Hо просто факт конкатенации не годится - если написать
           my $dummy = $SectionName . '';
 
 то не работает.
 Есть подозрение, что описанное странное повведение как-то связано с
 байтовой/символьной семантикой.
 
 Чтение perldoc perluniintro, perlunicode не помогло ;(
 
 Хелп!
 --- ifmail v.2.15dev5
  * Origin: Demos online service (2:5020/400)
 
 

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

 Тема:    Автор:    Дата:  
 мистика ;)   Igor Trofimov   08 Jul 2003 23:57:46 
 Re: мистика ;)   Mikhail Polykovsky   09 Jul 2003 07:27:57 
 Re: мистика ;)   Igor Trofimov   09 Jul 2003 20:22:03 
 Re[2]: мистика ;)   Mikhail Polykovsky   10 Jul 2003 10:32:22 
 Re: мистика ;)   Igor Trofimov   10 Jul 2003 21:34:08 
 Re: мистика ;)   Ivan Frolcov   12 Jul 2003 13:42:15 
 Re: мистика ;)   Igor Trofimov   12 Jul 2003 21:27:10 
 Re: мистика ;)   Protasovitski Andrei   10 Jul 2003 10:19:01 
 Re: мистика ;)   Igor Trofimov   10 Jul 2003 21:27:05 
Архивное /ru.perl/4549fa134510.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional