|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Igor Nikolaev 2:5030/266 07 Jul 2001 04:20:48 To : "Evgenia Firsova" Subject : Re: проблема с хэшем? -------------------------------------------------------------------------------- Evgenia Firsova <saigo@peterlink.ru> wrote: > # функция открывает файл и читает данные в хэш > # входные параметры: имя файла > sub data_hash() > { > open(KAT_FILE,"< $_[0]"); > while (<KAT_FILE>) > { > chomp; > ($num,$txt,$price)=split(/:/,$_); > $data{$num}=$txt.":".$price; > } > close(KAT_FILE); > return %data; > } Ой, ужастики: sub data_hash { open I, $_[0] or die "Can't open $_[0]"; chomp ( my %data = map { split /:/, $_, 2 } <I> ); close I and return %data; } > # функция добавления записи в файл > # входные параметры: имя файла, строка описания, строка цены > sub data_add() > { > data_hash($_[0]); > $data{1+scalar keys %data}=$_[1].":".$_[2]; > $i=1; > foreach $num (sort {$data{$a} cmp $data{$b}} keys %data) > { $new_data{$i}=$data{$num}; $i++; } > %data=%new_data; > open(KAT_FILE,"> $_[0]"); > foreach $num (keys %data) > { print KAT_FILE $num.":".$data{$num}."\n"; } Это вообще тихий ужас на крыльях ночи... Что там за извращения с сортировкой хеша? Может просто `sleep дофига` написать? > Too many arguments for main::data_hash at step1to2.pl line 69, near "])" > line 69 - это строка data_hash($_[0]); в процедуре data_add() Hе обращай внимания. Это всё мелочи. > подскажите, в чём ошибка? Ошибка в том, что такие вещи пишут либо используя tie, .db либо на sql. Похоже что всю подобную дребедень нужно просто переписывать заново. Для начала с use strict; и -w > Евгения -- Игорь Hиколаев --- ifmail v.2.12.os.sensi * Origin: man perlfunc -> tie (2:5030/266@fidonet) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/13416e0aa94e2.html, оценка из 5, голосов 10
|