|
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)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/4549fa134510.html, оценка из 5, голосов 10
|