Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » Perl: массив+хеш

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

KurtSkinny

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как создать такой массив: $var[1]{'name'} ?
приспичило вот... =)

Всего записей: 5 | Зарегистр. 25-03-2005 | Отправлено: 20:08 25-03-2005
Nvc

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
KurtSkinny
Вот так:
$var[1]{'name'} = 'some var';
Больше есть тут:
http://forum.ru-board.com/topic.cgi?forum=31&topic=7489#1

Всего записей: 235 | Зарегистр. 01-08-2004 | Отправлено: 20:35 25-03-2005
batva



crazy administrator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KurtSkinny

Цитата:
Как создать такой массив: $var[1]{'name'} ?  

 
my @array = (
          { key1 => 'value1', key2 => 'value2' },
          { key1 => 'value3', key2 => 'value4' },
);
 
print $array[0]{key1};# value1
print $array[1]{key2};# value4

Всего записей: 12593 | Зарегистр. 07-01-2001 | Отправлено: 22:10 25-03-2005
easyman



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
более кошерно...
 
my $array = [
          { key1 => 'value1', key2 => 'value2' },
          { key1 => 'value3', key2 => 'value4' },
];
 
print $array->[0]->{key1};# value1
print $array->[1]->{key2};# value4

Всего записей: 483 | Зарегистр. 25-10-2002 | Отправлено: 16:55 28-03-2005 | Исправлено: easyman, 16:56 28-03-2005
KurtSkinny

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
batva, easyman, большое спасибо! то что нужно :)

Всего записей: 5 | Зарегистр. 25-03-2005 | Отправлено: 15:03 29-03-2005
KurtSkinny

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
И еще вопросик:
 
Есть массив:
$var{'1'}{'11'} = 'hm11';
$var{'1'}{'12'} = 'hm12';
$var{'1'}{'13'} = 'hm13';
$var{'2'}{'21'} = 'hm21';
$var{'2'}{'22'} = 'hm22';
$var{'2'}{'23'} = 'hm23';
 
Как можно раотать с таким массивом если заранее не известны ключи?
 
Т.е. нужно сначала определить какие есть первичные ключи (1 и 2 на примере) и какие к ним - вторичные (11 12 13 для 1 ключа и 21 22 23 для 2 ключа)?
 
Что-то типа: (не канает):
 
foreach $s1 (keys %var) {
    foreach $s2 (keys $var{$s1}) {
        print $var{$s1}->$s2;
    }
}

Всего записей: 5 | Зарегистр. 25-03-2005 | Отправлено: 05:51 09-04-2005
nicy



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Что-то типа: (не канает):  
 
foreach $s1 (keys %var) {  
    foreach $s2 (keys $var{$s1}) {  
        print $var{$s1}->$s2;  
    }  
}

Потому что keys он для hash'eи. Ты без него попрубуй.

Всего записей: 198 | Зарегистр. 09-01-2002 | Отправлено: 06:44 09-04-2005
KurtSkinny

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вся проблемма в том, что я не моуг получить список ключей второй размерности...
т.е. как выцепить keys $var->$s1 ?

Всего записей: 5 | Зарегистр. 25-03-2005 | Отправлено: 06:59 09-04-2005
nicy



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Вся проблемма в том, что я не моуг получить список ключей второй размерности...  
т.е. как выцепить keys $var->$s1 ?

Значит у тебя хаш. С первого раза не увидел подумал простой массив. А вобще всё просто попробуй %{$var{$s1}} или %var{$s1}

Всего записей: 198 | Зарегистр. 09-01-2002 | Отправлено: 07:16 09-04-2005
KurtSkinny

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
%{$var{$s1}} !
big thx! =)

Всего записей: 5 | Зарегистр. 25-03-2005 | Отправлено: 07:23 09-04-2005
tolyn77



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
всем, привет
может не туда, сильно не пинайте
подскажите пожалуйста как из этих данных
0.1.230.61.50.206 => 0x0001e63d32ce
0.1.230.61.0.206 => 0x0002343d32ce
0.1.230.61.50.206 => 17
0.1.230.61.0.206 => 14
0.1.230.61.50.206 => 3
0.1.230.61.0.206 => 5
сделать хеш массивов?
0.1.230.61.50.206 => {0x0001e63d32ce,17,3}
0.1.230.61.0.206 => {0x0002343d32ce,14,5}
заранее благодарен

Всего записей: 1498 | Зарегистр. 07-09-2004 | Отправлено: 08:12 23-05-2014 | Исправлено: tolyn77, 09:04 23-05-2014
CheRt



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
tolyn77,  

Код:
 
my $source = '0.1.230.61.50.206 => 0x0001e63d32ce
0.1.230.61.0.206 => 0x0002343d32ce
0.1.230.61.50.206 => 17
0.1.230.61.0.206 => 14
0.1.230.61.50.206 => 3
0.1.230.61.0.206 => 5';
 
my %result;
 
foreach my $str( split(/\r?\n/, $source) ) {
    my ($oid, $value) = split(/\s*=>\s*/, $str);
    next unless ($oid && $value);
    $result{$oid} = [] unless (exists $result{$oid});
    push( @{ $result{$oid} }, $value );
}
 


----------
В огне бода нет и не будет!
До встречи в СССР 2.0!

Всего записей: 1118 | Зарегистр. 14-12-2001 | Отправлено: 10:36 23-05-2014
tolyn77



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
CheRt
не совсем так
я думал можно сначало сделать хем массивов, как просто хеш а потом добавлять в определенный хеш дополнительно значение и тем саммы формировать массив

Всего записей: 1498 | Зарегистр. 07-09-2004 | Отправлено: 10:59 23-05-2014
CheRt



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
tolyn77,

Цитата:
я думал можно сначало сделать хем массивов, как просто хеш а потом добавлять в  
определенный хеш дополнительно значение и тем саммы формировать массив

Не понял, цель какая, что должно быть на выходе? (может список уникальных значений по ключу?)


----------
В огне бода нет и не будет!
До встречи в СССР 2.0!

Всего записей: 1118 | Зарегистр. 14-12-2001 | Отправлено: 12:13 23-05-2014
tolyn77



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
да хотелось увидеть список уникальных знаечений

Всего записей: 1498 | Зарегистр. 07-09-2004 | Отправлено: 10:50 06-11-2014
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Интернет » Web-программирование » Perl: массив+хеш


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru