• Авторизация


Работа с CSV в Perl 08-05-2006 11:30 к комментариям - к полной версии - понравилось!


Всем привет!

Я изучаю Perl, смотрю у вас тут ни одного сообщения про него нет...
Вобщем возникло затруднение при написании кода, и если кто-то в этом разбирается, то буду рад помощи! :)

Проблем вот в чем:


code:

sub check_sells
{

open(CHECKFILE, "sells.csv"); #открываем файл CSV
#(записи типа:
#first;one
#apple;yellow
#mango;green
#...

while ()#читаем его построчно
{
push(@sells, $_);#и каждую строчку добавляем в массив @sells
}
close(CHECKFILE);

$tmp=qq[$FORM{'pin'};$FORM{'pwd'}];#это искомая строка

foreach $line (@sells)#просамтриваем массив @sells построчно
{
if ($line ne "$tmp")#если не находим, то ищем дальше
{
next;
}
else #если совпало, то переходим к другой подпрограмме и выходим
{
&step2;
exit;
}
}

&error_sells; #а если вообще не нашли, то переходим сюда.
}



Проблема в том, что этот в результате выполнения всегда выполняется &error_sells;

я уже не знаю в чём может быть проблема...
вверх^ к полной версии понравилось! в evernote
Комментарии (2):
08-05-2006-13:31 удалить
Тут все дело в том, строки в текстовом файле завершаються с помощью спецсимволов \r\n
Либо просто \n
А «Яблоко» на равно “Яблоко\r\n”.

То есть от этих символов нужно избавиться:
$line=~ s/\n//g;
$line=~ s/\r//g;

Совет: Чтение из файла в массив лучше производить так:
Tatarnikoff 08-05-2006-17:13 удалить
dvl999, да я предполагал, что проблема может быть в этом, но по видимому не правильно избавлялся от символов конца строки "\n".

Я делал это с помощю функции chop();
А именно так:
code:

if ($line !~ /^*\n/)
{
chop(@FORM



Это не правильно? Я еще специально сравнивал введенную пользователем строку и найденную в файле, даже если в обоих есть символ "\n" программа не видела этого, и вела себя словно эти строки не совпадают.


Комментарии (2): вверх^

Вы сейчас не можете прокомментировать это сообщение.

Дневник Работа с CSV в Perl | web_development - Веб-разработка | Лента друзей web_development / Полная версия Добавить в друзья Страницы: раньше»