Да нет, думаю хеш тут не понадобится. Просто разбивай строку по символу |. Код | open(F, "< $file") or die $!; while (<F>) { my( $name, $url, $mess ) = split(/\|/); print "Name: $name<br/>"; print "URL: $url<br/>"; print "Mess: $mess<br/>"; print "<hr/>"; } close(F);
|
Заметь, что вовсе не стоит читать весь файл в память, т.е. в массив. PS:$lines[$i] - Это элемент массива, а не хеша. $lines{$i} - Элемент ассоциативного массива, т.е. хеша. Вот тебе несколько примеров работы с массивами, а с хешами напишу как-нить в другой раз, глаза уже слипаются.  Код | # Создаём массив my @names = ("Andrey", "Sergey", "Alexandr");
################################################################################ # Покажим первый и последний элементы массива print "Первый: $names[0]\n"; # Выведет: Коля print "Последний: $names[-1]\n"; # Выведет: Саша print "=" x 80, "\n\n"; # Просто разделитель
################################################################################ # Теперь выведем весь массив в STDOUT print "Все элементы массива, каждый на отдельной строке\n"; print "$_\n" for ( @names ); print "=" x 80, "\n\n"; # Просто разделитель
################################################################################ # Теперь в обратном порядке print "Массив в обратном порядке\n"; print "$_\n" for ( reverse @names ); print "=" x 80, "\n\n"; # Просто разделитель
################################################################################ # Теперь выведем отсортированный массив print "Отсортированный массив\n"; print join("\n", sort {$a cmp $b} @names), "\n"; print "=" x 80, "\n\n"; # Просто разделитель
################################################################################ # Теперь выведем отсортированный массив, но в обратном порядке print "Отсортированный массив, в обратном порядке.\n"; print "$_\n" foreach ( sort {$b cmp $a} @names ); print "=" x 80, "\n\n"; # Просто разделитель
################################################################################ # Выведем общее кол-во имён в массиве print "Кол-во элементов: " . scalar @names . "\n"; print "=" x 80, "\n\n";
################################################################################ # Извлечём нулевой элемент массива и сохраним его в переменную, затем # выведем этот элемент из переменной и покажем сколько осталось элементов # в массиве и покажем содержимое массива. my $first_name = shift @names; print "Извлёк имя: $first_name\n"; print "Элементов в массиве: " . scalar @names . "\n"; print "Содержимое массива: " . join(" ", @names) . "\n"; print "=" x 80, "\n\n"; # просто разделитель
################################################################################ # Теперь добавим элемент, который мы извлекли из начала массива на пред идущем # шаге, в конец массива. Покажем кол-во элементов и выведем содержимое массива. push(@names, $first_name); print "Добавил: $names[-1]\n"; print "Элементов: " . scalar @names . "\n"; print "Содержимое массива: @names\n"; print "=" x 80, "\n\n"; # просто разделитель
################################################################################ # Поменяем местами последний и первый элементы массива и снова покажем его # содержимое. print "Меняем местами первый и последний элементы\n"; ($names[0],$names[-1]) = ($names[-1],$names[0]); print "Массив после обмена: @names\n\n"; print "=" x 80, "\n\n"; # Просто разделитель
################################################################################ # Повторим обмен, только уже другим способом print "Обменяем первый и последний элементы только другим спососбом.\n"; @names[0,-1] = @names[-1, 0]; print "Массив после повтороного обмена: @names\n"; print "=" x 80, "\n\n"; # Просто разделитель
################################################################################ # Покажем второй и третий элементы, при помощи среза массива. print "Покажем предпоследний и последний элементы с помощью среза:\n"; print "Предпоследний и последний элементы: @names[-2, -1]\n"; print "=" x 80, "\n\n"; # Просто разделитель
################################################################################ # Превратим наш массив имён в массив символов и покажем массив, каждую букву, на # отдельной строке. @names = split("", join(" ", @names)); print join("\n", @names), "\n"; print "=" x 80, "\n\n"; # Просто разделитель
################################################################################ # теперь теперь вернём наш массив в исходное состояние, тоесть соберём из массива # символов, массив имён и покажем каждый его елемент на отдельной строке. @names = split(/\s+/, join("", @names)); print join("\n", @names), "\n";
|
И поверь это ещё далеко не всё. ;)))))) Тебе стоит обратить особое внимание на те участки где используетсчя split - он разбивает строку, а join наоборот собирает её. Это сообщение отредактировал(а) korob2001 - 10.1.2006, 21:50
--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. "Время стоит - проходите вы".
|