Forum Webscript.Ru

Программирование => Perl => Тема начата: FANTAzeRus от 16 Декабря 2003, 10:55:06

Название: Perl vs Смайлики
Отправлено: FANTAzeRus от 16 Декабря 2003, 10:55:06
Есть написанный мною код:
my %SM=();
my $result=$dbh->prepare("select * from smiles");        
$result->execute();
while (my $ln = $result->fetchrow_hashref())
 {
   $SM{$ln->{\'text\'}}="$ln->{\'file\'}:$ln->{\'alt\'}";
 }

while (my($k,$v)=each(%SM))
 {
   my($f,$a)=split(":",$v);
   $im="\'$a\'";
   $TEXT =~ s/$k/$im/;    
 }

Не работает!!! :-( В чем моя ошибка! Может кто подскажет более правильный и быстрый способ замыны  смайликов картинками!!!
Название: Perl vs Смайлики
Отправлено: ondr от 16 Декабря 2003, 11:26:05
Что пишет? Какие записи в логах? strict, warnings включены? в предпоследней строке изпользуй метасимвол \\Q в рег. выр. Покажи, что выходит в переменной $im. В конце концов попытайся правильно изложить задачу.
Название: Perl vs Смайлики
Отправлено: FANTAzeRus от 16 Декабря 2003, 11:46:06
В том то все и дело что НИЧЕГО!!! Скрипт просто вешается на
$TEXT =~ s/$k/$im/;

Если заремить выполняется но естественного ничего не меняет!
$im все нормально возвращает!

Задача: Скрипт пр попытке замены смайлов на картинки просто вываливается, т.е. В начале скрипта у меня вывод заголовка HTTP а в конце вывод результата скрипта до конца просто не доходит вешается на см выше ....

....
my $T;
print Header();
...
...
$T .= "....";
...
...
print $T;
Название: Perl vs Смайлики
Отправлено: ondr от 16 Декабря 2003, 11:54:54
Повторюсь:

Цитировать
ondr:
в предпоследней строке изпользуй метасимвол \\Q в рег. выр.


$TEXT =~ s/\\Q$k/$im/;
Название: Perl vs Смайлики
Отправлено: FANTAzeRus от 16 Декабря 2003, 16:15:24
Пасиб! Усе заработало! А можно небольшой ликбез - что это и как лечит???
Название: Perl vs Смайлики
Отправлено: ondr от 16 Декабря 2003, 16:21:15
Это экранирование всего нехорошего, что лежит в переменной $k - в твоём случае.

Вообщем все тут - perldoc perlre