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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Реген из массива в хэш 
:(
    Опции темы
Гость_mcx
Дата 15.12.2004, 21:29 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Всем привет!

Проблема вот в чем:

У меня есть массив вот таких значений:

Код

local @items=(
'item1=value1',
'item2=value2',
'item3=value3'
);


ну так вто надо перевести в хэш такого вида:

Код

local %items=(
'item1'=>'value1',
'item2'=>'value2',
'item3'=>'value3',
);


smile

Что посоветуете???
  Вверх
Гость_mcx
Дата 15.12.2004, 21:30 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











причем забыл нужно не тривиальный способ типа там foreach split etc. а более оригинальный , например, с использованием map но у меня так не получается ))
  Вверх
chaos
Дата 16.12.2004, 12:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Серийный программист
****


Профиль
Группа: Завсегдатай
Сообщений: 2979
Регистрация: 7.7.2004
Где: Екатеринбург

Репутация: 6
Всего: 44



вот тебе примерчик для размышления
%hash = map {getkey($_) => $_ } @array;

Это сообщение отредактировал(а) chaos - 16.12.2004, 12:43
PM WWW   Вверх
chaos
Дата 16.12.2004, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Серийный программист
****


Профиль
Группа: Завсегдатай
Сообщений: 2979
Регистрация: 7.7.2004
Где: Екатеринбург

Репутация: 6
Всего: 44



вот тебе еще готовый пример, может подойдет:
Код

@items=('item1=value1','item2=value2','item3=value3');

%hash = map {getkey($_) => getval($_) } @items;

foreach (keys %hash) {
 print $_." => ".$hash{$_}."\n";
}

sub getkey {
 my $s= $_[0];
 $s=~s/(.+)\=.+/$1/;  
 return $s;
}

sub getval {
 my $s = $_[0];
 $s =~ s/.+\=(.+)/$1/;
 return $s;
}

Добавлено @ 13:01
Цитата
причем забыл нужно не тривиальный способ типа там foreach split etc. а более оригинальный , например, с использованием map но у меня так не получается ))

а чем тебя foreach неустраивает ??
PM WWW   Вверх
chaos
Дата 16.12.2004, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Серийный программист
****


Профиль
Группа: Завсегдатай
Сообщений: 2979
Регистрация: 7.7.2004
Где: Екатеринбург

Репутация: 6
Всего: 44



Вот еще могу один пример предложить, более компактный и ОРИГИНАЛЬНЫЙ:
Код

@items=('item1=value1','item2=value2','item3=value3');

%hash = map {/(.+)\=(.+)/, $1 => $2 } @items;

while (($k,$v) = each %hash) {
 print "$k => $v\n";
}


ps: за порядок вывода элементов не ручаюсь smile

Это сообщение отредактировал(а) chaos - 16.12.2004, 13:16
PM WWW   Вверх
Kiber_rat
Дата 23.12.2004, 10:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


MACMANIAC
**


Профиль
Группа: Участник
Сообщений: 276
Регистрация: 18.4.2002
Где: Ashdod, Israel

Репутация: 7
Всего: 9



Думаю такой вариант тоже неплохо смотрится ;)
Код

@items=qw(q=1 w=2 e=3 r=4);
%hash=map {split /=/} @items;
print "$_ = $hash{$_}\n" for sort keys %hash'



--------------------
Best regards!                                                             
@..@_____Ku6ep
=*=______\______KPbIC
Код
print join "",map{chr}(split/(\w{2})/,hex(int(2175.57302796298**2)))
PM WWW ICQ Skype Jabber YIM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


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

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


 




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


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

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