Автор Тема: Как загнать данные в хэш  (Прочитано 2684 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Yuraz

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 111
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.kirov.ru/~yura
Как загнать данные в хэш
« : 14 Мая 2002, 11:50:28 »
Встретился с такой проблемой, нужно в @data ввести значения как в нижнем блоке, в нижнем болке в @data данные введены как постоянные, а надо что бы они считывались из файла..., считывается, разбивается, а в массив ввести не могу, что делаю не так?

*****************************************
# это пытаюсь вбить значения сам, не получается
open (T, "$txt");
          @line=;
          close (T);

for($i=0;$i<@line;$i++)
            {
                  ($d,$t)=split("::",$line[$i]);
                  $data{$d}  = $t;  #не правильно здесь
            }
****************************************
# это как постоянно вбитые значения, работает нормально
@data = (
           ["Yhjlh", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
           [ 6203,  3500,  3973,  2859,  3012,  3423,  1230]
        );
****************************************

Оффлайн YA

  • Модератор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 597
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Как загнать данные в хэш
« Ответ #1 : 14 Мая 2002, 12:19:50 »
Цитировать
for($i=0;$i<@line;$i++)

Тогда уж так: for (my $i=0;$i<=$#line;$i++)

А вообще вопрос не очень понятен. В каком формате данные в файле и какой хэш надо получить?
Литературный перевод с русского и английского на Perl. Дорого!

Оффлайн Chs

  • Perl программер
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1108
  • +0/-0
  • 2
    • Просмотр профиля
    • http://chs.now.at/
Как загнать данные в хэш
« Ответ #2 : 14 Мая 2002, 13:39:58 »
Цитировать
*****************************************
# это пытаюсь вбить значения сам, не получается
open (T, "$txt");
@line=;
close (T);

for($i=0;$i<@line;$i++)
{
($d,$t)=split("::",$line[$i]);
$data{$d} = $t; #не правильно здесь
}
****************************************
# это как постоянно вбитые значения, работает нормально
@data = (
["Yhjlh", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
[ 6203, 3500, 3973, 2859, 3012, 3423, 1230]
);
****************************************

В первом случае создается явно хеш, во втором массив ссылок на  массивы.
Разница, думаю есть.:)
Кстати chomp в первом случае неплохо бы добавить после считывания данных из файла.
2B OR NOT 2B = FF

Оффлайн Yuraz

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 111
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.kirov.ru/~yura
Как загнать данные в хэш
« Ответ #3 : 14 Мая 2002, 14:32:45 »
В первом случае создается явно хеш, во втором массив ссылок на массивы.
А как создать массив ссылок на масивы?

Вот кусок файла который я считываю: название::количество

Mon::3
Tue::5
Wed::1

его и надо вписать в @data
:(

Оффлайн Chs

  • Perl программер
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1108
  • +0/-0
  • 2
    • Просмотр профиля
    • http://chs.now.at/
Как загнать данные в хэш
« Ответ #4 : 14 Мая 2002, 14:53:53 »
Цитировать
А как создать массив ссылок на масивы?

Для данной задачи лучше хэш, логичнее по крайней мере. :)

Ну если очень надо, то
(часть после split)
push @{$data[0]},$d;
push @{$data[1]},$t;
2B OR NOT 2B = FF

Оффлайн Yuraz

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 111
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.kirov.ru/~yura
Как загнать данные в хэш
« Ответ #5 : 16 Мая 2002, 07:15:29 »
Отвечаю с задержкой, инет не работал.
Chs , то что надо, спасибо!

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28