Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > Проблемма со скриптом


Автор: туварищщщ\ 31.5.2005, 22:46
Помогите разобраться с написанием программы.
Задача: Написать программу которая бы брала данные из файла и сверяла их с данными ( на повторение) полученными от пользователя.
Если данные введённые пользователям не существуют в файле то они пишутся в файл (один раз) если они существуют то ничего не записывается.
Ниже код моей ( не работающей программы ) и текст сверяемого файла.

"1.txt"
0
1
2
3
4
5
6
7
8
9
0

"program.pl"
#!c:/perl/bin/perl -s

# получаем данные из файла
open(f1,"1.txt");
@mass=<f1>;
close(f1);

# данные от пользователя заносим в хеш
%hash=('w'=>'w');

# сверяем данные из файла и полученные от пользователя
if( !$hash[@mass] ){
# если данные новые то пишем их в файл
open(f2,">>1.txt");
print f2 "$hash{'w'}\n";
close(f2);
print "@mass[$i] add <br>";
}
else{
print "@mass[$i] double<br>";
}

Как реализовать проверку на повторение данных?

Автор: korob2001 1.6.2005, 10:27
Мдя, туварищщщ\ smile
Ладно, вот тебе исходник, а вообще мой тебе совет: Сходи в ближайший магазин и преобрети себе книгу.
Код

#!/usr/bin/perl -w
use strict;

my $file = "1.txt";

# В следующей переменной строка полученная от юзера
my $str = "Hello, world2!";

my $check = 0;

open( F, "< $file" ) or die "Can't open file '$file': $!\n";
   open( B, "> $file.back" ) or die "Can't open file '$file.back': $!\n";
      while ( <F> ) {
          chomp;
          $check = 1 if $_ eq $str;
          print B "$_\n";
      }
      print B "$str\n" unless $check;
   close( B );
close( F );

unlink( $file ) or warn "Can't delete file '$file': $!\n";
rename( "$file.back", $file ) or die "Can't rename file '$file.back' to '$file': $!\n";

ЗЫ: Если данные получаешь в хеш, может есть смысл заюзать DBM файл????

М
 
При вставке кода, пользуйся кнопкой "КОД", что бы не терялось форматирование кода  и что бы он был подсвечен.


Удачи.

Автор: туварищщщ\ 1.6.2005, 12:15
korob2001 спасибо всё работает и книгу я себе купил
А.Матросов Perl программирование на языке высокого уровня.

Автор: korob2001 1.6.2005, 13:34
Цитата

А.Матросов Perl программирование на языке высокого уровня.

Отличная книга кстати.
Удачи тебе.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)