|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Igor Trofimov 2:5020/400 10 Jul 2003 21:34:08 To : Mikhail Polykovsky Subject : Re: мистика ;) -------------------------------------------------------------------------------- MP> Покажи код, вдруг там чего... Весь код показывать неохота - большой и нудный... ну вот чуть поподробнее кусок $stmt2->execute($ID); my $LocalCount = 0; my $LocalCount2 = 0; while ( $stmt2->fetch(\@row2) == 0 ) { $LocalCount++; my $Section = $row2[0]; my $SectionName = $row2[1]; # Strange, but unnecessary!!!!! $SectionName .= ''; if (exists($Parts{$SectionName})) { $Msg .= $Parts{$SectionName}; $LocalCount2++; } } $stmt2->close(); Кстати, обнаружил аналогичное поведение в аналогичной ситуации в другом месте скрипта. Может, существенно, в начале прописано use encoding "cp1251"; use open IO => ':encoding(cp1251)'; В попытках окончательно убедиться в глюке написал следующий фрагмент: my $SectionName = $row2[1]; my $Dummy = $SectionName; print '<'; print int( exists($Parts{$SectionName}) ); print int( exists($Parts{$Dummy}) ); print '|'; $Dummy .= ''; print int( exists($Parts{$SectionName}) ); print int( exists($Parts{$Dummy}) ); print ">\n"; То есть мы просто копируем занчение в другую переменную и начинаем выводить результаты exists на этих двух переменных. Потом проводим конкатенацию одной из переменных пустой строкой и снова выводим результаты exists. Hу, в общем, получилось что-то типа <00|01> <00|00> <00|01> <00|01> ... т.е. сперва он ВООБЩЕ ничего не находит... а потом - если действительно заданный ключ существует - то он находит его по переменной, прошедшей конкатенацию, и не находит по второй. Это все прелестно работало на perl 5.5 на сейчашнем сервере perl 5.8 Как я понял, за это время многое изменилось. Все-таки грешу на unicode'ные дела. --- ifmail v.2.15dev5 * Origin: Demos online service (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/4549dd94cd56.html, оценка из 5, голосов 10
|