Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (Perl) Работа с текстовым файлом. Сравнение строки из файла с эталоном. / 3 сообщений из 3, страница 1 из 1
24.04.2006, 15:52:17
    #33686600
Ceridan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(Perl) Работа с текстовым файлом. Сравнение строки из файла с эталоном.
Есть текстовый файл, я него записываю информацию, записывается все правильно, вот фрагмент работы с файлом:
Код: plaintext
1.
2.
3.
4.
5.
6.
$filename = "mailbox.txt";
open(MailFile,">$filename") || die; 
print MailFile "123\n";
print MailFile "***************\n";
print MailFile "456\n";
close(MailFile);

Далее мне нужно читать файл, и ежели считанная стркоа не совпадает со строчкой из звездочек, то просто выводить ее без изменений, а если совпадает, то вывдить другую строку. Вот, что я пишу:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
$filename = "mailbox.txt";
open(MailFile, "<$filename") || die;
while ( $line=<MailFile> ) 
{
if ( $line eq "****************") {print "zvezdochki <br>";}
else  {print"$line <br>";}
}
close(MailFile);
Но почему-то, он выводит все строки подряд и звездочки тоже. Если писать if ( $line eq "****************\n") тоже не помогает :( Подскажите?
...
Рейтинг: 0 / 0
24.04.2006, 16:14:58
    #33686671
g613
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(Perl) Работа с текстовым файлом. Сравнение строки из файла с эталоном.
1. пользуй use strict;

2. пользуй $! вммести с die ( die $! как минимум ), чтоб не умереть в неведениии...

3. chomp $line, но если внутренний голос меня не обманывает и у тебя винда, то я не сильно уверен, что chomp 'отрежет' `\r`... Чтоб сильно не мудрить первое что приходит в голову писать в файл в binmode...
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
use strict;
my $filename = "mailbox.txt";
open(MailFile,">$filename") || die "Can't open file $filename: $!";  
binmode MailFile;
print MailFile "123\n";
print MailFile "***************\n";
print MailFile "456\n";
close(MailFile);

$filename = "mailbox.txt";
open(MailFile, "<$filename") || die $!;
while ( $line=<MailFile> ) 
{
chomp $line;
if ( $line eq "****************") {print "zvezdochki <br>";}
else  {print"$line <br>";}
}
close(MailFile);

P.S.
ну и на последок - число звездочек в первом и втором случае у тебя разное...
:)
...
Рейтинг: 0 / 0
24.04.2006, 16:22:58
    #33686690
Ceridan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(Perl) Работа с текстовым файлом. Сравнение строки из файла с эталоном.
Спасибо Вам! На самом деле помог даже один chomp. Без binMode и прочего.
Чутье Вас не обмануло - у меня винда :) Спасибо большое :)

P.S. Со звездочками да :) Но без chomp все равно не работало :)
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (Perl) Работа с текстовым файлом. Сравнение строки из файла с эталоном. / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]