Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблемма со скриптом, Как реализовать проверку на повторение 
:(
    Опции темы
туварищщщ\
Дата 31.5.2005, 22:46 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











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

"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 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 31
Всего: 61



Мдя, туварищщщ\ 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 файл????

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


Удачи.

Это сообщение отредактировал(а) korob2001 - 1.6.2005, 10:30


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
туварищщщ\
Дата 1.6.2005, 12:15 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











korob2001 спасибо всё работает и книгу я себе купил
А.Матросов Perl программирование на языке высокого уровня.
  Вверх
korob2001
Дата 1.6.2005, 13:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 31
Всего: 61



Цитата

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

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


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0452 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.