🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.perl
7 messages
7 total messages Started by Sl Wed, 27 May 2009 09:53
Pytanko z hash...
#51426
Author: Sl
Date: Wed, 27 May 2009 09:53
41 lines
1481 bytes
Czesc!

 Mam w skrypcie coś takiego:

my %tmp = map { /(\S+$)/,$_ } grep {/^\d+/} @grups;

i tworzy mi pięknego hasha:

$VAR1 = {
          'A' => 'ZZZ',
          'B' => 'XXX',
          'C' => 'OOO',
          'D' => 'QQQ'
        };

Pytano jak przerobić linię w skrypcie aby otrzymać:

$VAR1 = {
          'A' => {
			'opis' => 'ZZZ',
		 },
          'B' => {
			'opis' => 'XXX',
		 },
          'C' => {
			'opis' => 'OOO',
		 },
          'D' => {
			'opis' => 'QQQ',
		 }
        };

Czyli chciałbym zrobić zagnieżdżonego hasha.

Z góry dzięki za pomoc bo utknąłem.

Teoretycznie można by przebudować hasha ale ciekawi mnie czy można od
razu zrobić to tak jak chcę przez za pomocą tej linijki.

Pozdr.
S.
Re: Pytanko z hash...
#51427
Author: Sl
Date: Wed, 27 May 2009 10:17
8 lines
954 bytes
Mam:

 my %tmp = map { /(\S+$)/,{opis=>$_} } grep {/^\d+/} @grups;

Sorry za zaśmiecanie...

Pozdr.
S.
Re: Pytanko z hash...
#51428
Author: Kacper Perschke
Date: Wed, 27 May 2009 10:27
28 lines
1559 bytes
Dnia 27.05.2009 Sl@eR <future_witch_off_spam@nospam.com> napisało:
> [...]
> my %tmp = map { /(\S+$)/,$_ } grep {/^\d+/} @grups;
> [...]
> \%tmp = {
>           'A' => 'ZZZ',
>           'B' => 'XXX',
>           'C' => 'OOO',
>           'D' => 'QQQ'
>         };

Tu coś brzydko pachnie.

> [...]
> Czyli chciałbym zrobić zagnieżdżonego hasha.

my %tmp = map { /(\S+$)/ => { 'opis' => $_ } } grep { /^\d+/ } @grups;

> Z góry dzięki za pomoc bo utknąłem.

Proszę, ale zapachu to nadal nie usunęło.

> Teoretycznie można by przebudować hasha ale ciekawi mnie czy można od
> razu zrobić to tak jak chcę przez za pomocą tej linijki.

Trzeba poczytać perldoc -f map

KAcper
Re: Pytanko z hash...
#51429
Author: Sl
Date: Wed, 27 May 2009 10:52
26 lines
1524 bytes
Kacper Perschke pisze:
> Dnia 27.05.2009 Sl@eR <future_witch_off_spam@nospam.com> napisało:
>> [...]
>> my %tmp = map { /(\S+$)/,$_ } grep {/^\d+/} @grups;
>> [...]
>> \%tmp = {
>>           'A' => 'ZZZ',
>>           'B' => 'XXX',
>>           'C' => 'OOO',
>>           'D' => 'QQQ'
>>         };
> 
> Tu coś brzydko pachnie.

Zrobiłem tak:

my %tmp = map { /(\S+$)/,{opis=>$_} } grep {/^\d+/} @grups;

Wartość w nawiasie to ma być klucz hasha (wynik /(\S+$)/) a wartość to
{opis=>$_}. Tak abym mógł tego hasha w dalszej części skryptu rozbudowywać.

Zla konstrukcja? Chciałem jednolinijkowca zrobic ;)


Pozdr.
S.
Re: Pytanko z hash...
#51430
Author: Stachu 'Dozzie' K.
Date: Wed, 27 May 2009 11:15
24 lines
1551 bytes
On 27.05.2009, Sl@eR wrote:
> Kacper Perschke pisze:
>> Dnia 27.05.2009 Sl@eR <future_witch_off_spam@nospam.com> napisało:
>>> [...]
>>> my %tmp = map { /(\S+$)/,$_ } grep {/^\d+/} @grups;
>>> [...]
>>> \%tmp = {
>>>           'A' => 'ZZZ',
>>>           'B' => 'XXX',
>>>           'C' => 'OOO',
>>>           'D' => 'QQQ'
>>>         };
>> 
>> Tu coś brzydko pachnie.
   ^^^^^^^^^^^^^^^^^^^^^^
> Zrobiłem tak:
>
> my %tmp = map { /(\S+$)/,{opis=>$_} } grep {/^\d+/} @grups;

Podałeś dane nie tylko nieprawdziwe, ale wręcz rażąco niezgodne
z działaniem przykładowego kodu, jeśli dobrze zrozumiałem Kacpra.

-- 
Stanislaw Klekot
Re: Pytanko z hash...
#51431
Author: Sl
Date: Wed, 27 May 2009 11:32
10 lines
1382 bytes
Stachu 'Dozzie' K. pisze:
> Podałeś dane nie tylko nieprawdziwe, ale wręcz rażąco niezgodne
> z działaniem przykładowego kodu, jeśli dobrze zrozumiałem Kacpra.

A to fakt. Na przyszłość się poprawię.

Dzięki za odzew.

Pozdr.
S.
Re: Pytanko z hash...
#51432
Author: Kacper Perschke
Date: Wed, 27 May 2009 12:00
10 lines
1290 bytes
Dnia 27.05.2009 Sl@eR <future_witch_off_spam@nospam.com> napisał:
>> Podałeś dane nie tylko nieprawdziwe, ale wręcz rażąco niezgodne
>> z działaniem przykładowego kodu, jeśli dobrze zrozumiałem Kacpra.
> A to fakt. Na przyszłość się poprawię.
> Dzięki za odzew.

Powodzenia.
EOT.

KAcper
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads