Forum Webscript.Ru
Программирование => Perl => Тема начата: webser от 16 Марта 2008, 01:31:47
-
Суть:: есть цикл, где читается инфа из файла и сравниваются переменная с полученной ранее.
# поиск наименования компании
for ($i=0;$i<@list;$i++)
{
my ($tmp_id, $tmp_firm, $tmp_resume, $tmp_logo, $tmp_link) = split(/$delimiter1/,$list[$i]);
print qq!
id1 :::: $id1 | tmp_id :::: $tmp_id
!;
if ($tmp_id eq $id1) {
my $firm = $tmp_firm;
}
}
Видим ::
.................
id1 :::: 0005 | tmp_id :::: 0004
id1 :::: 0005 | tmp_id :::: 0005
id1 :::: 0005 | tmp_id :::: 0006
id1 :::: 0005 | tmp_id :::: 0007
..................
Проблема :: не происходит сравнение НИКАК - при отладочной печати видно, что переменные (0005) есть и одинаковые, а if с eq - НЕ ХОЧЕТ и my $firm - ПУСТАЯ!!! В ЧЕМ ДЕЛО?
Заранее спасибо за БЫСТРЫЙ и СКОРЫЙ ответ.
P.S. Может ModPerl глючит?
P.S.S Вот код файла, который парсим
0001#2К-аудит###
0002#3 канал###
0003#BBM###
0004#Brother###
0005#Cool Air###
0006#De\'Longhi###
0007#European Food Group###
0008#Home Net Telecom (HNT)###
0009#Imac###
0010#Incity###
-
Продолжение мытарств :::
Поставил подробную ОТЛАДОЧНУЮ печать (данные файла - те же)
my $firm ="";
for ($i=0;$i<@list;$i++)
{
my ($tmp_id, $tmp_firm, $tmp_resume, $tmp_logo, $tmp_link) = split(/$delimiter1/,$list[$i]);
print qq!
id1 :::: $id1 | tmp_id :::: $tmp_id | === | firm ::: $firm >>>>> tmp_firm ::: $tmp_firm
!;
if ($tmp_id eq $id1) {
my $firm = $tmp_firm;
print qq!
OK ::::::: id1 :::: $id1 | tmp_id :::: $tmp_id | === | firm ::: $firm >>>>> tmp_firm ::: $tmp_firm
!;
}
}
print "
firm2 = ".$firm."\\n\\n";
Результаты работы скрипта ::::
id1 :::: 0005 | tmp_id :::: 0001 | === | firm ::: >>>>> tmp_firm ::: 2К-аудит
id1 :::: 0005 | tmp_id :::: 0002 | === | firm ::: >>>>> tmp_firm ::: 3 канал
id1 :::: 0005 | tmp_id :::: 0003 | === | firm ::: >>>>> tmp_firm ::: BBM
id1 :::: 0005 | tmp_id :::: 0004 | === | firm ::: >>>>> tmp_firm ::: Brother
id1 :::: 0005 | tmp_id :::: 0005 | === | firm ::: >>>>> tmp_firm ::: Cool Air
OK ::::::: id1 :::: 0005 | tmp_id :::: 0005 | === | firm ::: Cool Air >>>>> tmp_firm ::: Cool Air
id1 :::: 0005 | tmp_id :::: 0006 | === | firm ::: >>>>> tmp_firm ::: De\'Longhi
id1 :::: 0005 | tmp_id :::: 0007 | === | firm ::: >>>>> tmp_firm ::: European Food Group
id1 :::: 0005 | tmp_id :::: 0008 | === | firm ::: >>>>> tmp_firm ::: Home Net Telecom (HNT)
id1 :::: 0005 | tmp_id :::: 0009 | === | firm ::: >>>>> tmp_firm ::: Imac
id1 :::: 0005 | tmp_id :::: 0010 | === | firm ::: >>>>> tmp_firm ::: Incity
firm2 =
ПОЧЕМУ ?????????????????????????!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-
#!/usr/bin/perl -w
open (FILE, "test.htm");
@file=;
close (FILE);
$id1=\'0005\';
foreach (@file) {
($tmp_id, $tmp_firm) = split(/\\#/);
print "id1 :::: $id1 | tmp_id :::: $tmp_id\\n";
if ($tmp_id eq $id1) { $firm = $tmp_firm; }
}
print "FIRM = $firm !!!";
id1 :::: 0005 | tmp_id :::: 0001
id1 :::: 0005 | tmp_id :::: 0002
id1 :::: 0005 | tmp_id :::: 0003
id1 :::: 0005 | tmp_id :::: 0004
id1 :::: 0005 | tmp_id :::: 0005
id1 :::: 0005 | tmp_id :::: 0006
id1 :::: 0005 | tmp_id :::: 0007
id1 :::: 0005 | tmp_id :::: 0008
id1 :::: 0005 | tmp_id :::: 0009
id1 :::: 0005 | tmp_id :::: 0010
FIRM = Cool Air !!!
-
ФАНТАСТИКА - РАБОТАЕТ !!!
И почему у меня не работало? Что-бы избежать ошибок в будущем - вроде ТО ЖЕ самое делал!