Чтение и поиск в файле на Perl

  • Автор темы brunchik
  • Дата начала
B

brunchik

#1
Народ выручайте!Уже не могу, второй день не могу решить проблему.Скрипт должен открывать фаил на запись и сверять с веденым с клавиатуры числом.Если оно найдено то закрыть файл, а если нет то дописать в конец данное число.Скрипт я написан но он вместо желаемого результата то если в файле есть запись он дописывает или ее нету то все равно пишит.Или один раз запишит а в остальные не хочет.Помогите решить проблему.

Код:
#!/usr/bin/perl
$s=<>;
chomp($s);
unless (-e 'file')
{
system('touch file');
}
open(file,"+<file");
@file=<file>;
STOP: foreach $file(@file)
{
chomp($file);
if($file eq $s)
{
print "Запись найдена\n";
last STOP;
}
print "Запись ненайдена\n";
print file $s,"\n";

close file;
}

close file;

print "The End\n";
<>;
 
C

callaby

#2
Код:
#!/usr/bin/perl

use strict;
my $filename = 'file';

my $numbers = {};
if ( -e $filename ) {
open (fF,"<$filename") || die $!;
while (<fF>) {
chomp;
$numbers->{ $_ } = 1;
}
close fF;
}

print "Input your number:...\n";
my $from_klava = <>;
chomp($from_klava);
if (!exists($numbers->{$from_klava})) {
print "This record does not exist in file:$filename, append it\n";
open (tF,">>$filename") || die $!;
print tF $from_klava."\n";
close tF;
} else {
print "This record alredy exists in file:$filename, do not append\n";
}
print "The End!\n";