🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.perl
Article #39806

Re: hash w hashu i jeszcze tablcia skalarów

#39806
From: Grzegorz Szyszlo
Date: Thu, 21 Oct 2004 08:21
72 lines
3173 bytes
Szymon Sokół wrote:
> Zbyszek Malec <zbyszekto@tlen.pl> wrote:
> : Mam takie pytanie. Czy da się jako wartość hasha przechowywać drugiego
> : hasha któy z kolei przechowuje tablicę skalarów? Na necie znajduję
> : sprzeczne dane.
> Da się. A dokładnie to referencję do hasha, który zawiera referencję do
> tablicy.

gorzej. hash, ktory zawiera referencje do pozostalych hashy, jedna "komorka"
hasha to referencja do osobnego podrzednego hasha. z kolei kazdy podrzedny
hash, zawiera referencje do podleglych mu tablic.

my %a=(

pierwszy =>
    {k1=> [1,2,3],
     k2=> [5,6,7]
    }
,

drugi =>
    {k1=> [11,12,13],
     k2=> [15,16,17]
    }
,

trzeci =>
    {k1=> [21,22,23],
     k2=> [25,26,27]
    }

);


i odwolanie np. przez:
print $a{drugi}{k1}[3],"\n";


btw. napychanie takiej struktury to osobny problem :)
a konstrukcja $a{drugi}{k1}[3]  to jest skrot, bo dereferencje
robia sie automatycznie. tak naprawde jest to:
$a{drugi}->{k1}->[3]

co jest ladniejsza forma dla bardziej zlozonego zapisu ktorego
nie przytocze, bo sam bym mial problemy ze zrozumieniem :))))
wlasnie dlatego nie cierpie zlozonych struktur w C, pomimo ze te z pascala
bardzo lubie, pomimo ze moga zawierac referencje do tablic referencji referencji
i tego typu historie :))

> : Próbowałem zrobić coś takiego ale dostaję errora że powinienem zrobić
> : $locations zamiast @locations (niby logiczne o ile hash może
> : przechowywać jedynie skalary)
> 
> : @locations = @words{$word}{$fileName};

to zalezy co chesz wyciagnac :)

> 
> Składnia zła. Jeśli %words jest tym hashem, $words{$word} jest referencją do
> drugiego hasha, $words{$word}{$fileName} jest referencją do tablicy, a
> sama tablica to @{$words{$word}{$fileName}} - powinno zadziałać:
> @locations = @{$words{$word}{$fileName}} 

ech te "priorytety" :) zawsze mnie to wkurzalo. wzorem dla mnie
sa struktury w pascalu, gdzie sie wszystko robi (deklaruje, uzywa, czyta)
od lewej do prawej, bez patrzenia co z ktorej strony jest wazniejsze
i jakie ma wiazanie.

szkoda ze  @$words{$word}{$fileName}  nie dziala jak powinno, bo @ jest
wazniejsze od koncowego {...}   :(

znik.
Technical Details
Message-ID: <cl7rj4$jhg$1@news.lublin.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.onet.pl!lublin.pl!news.lublin.pl!not-for-mail
References: <1098302099.409440@vax.ustronie.pw.edu.pl> <cl6h30$agm$1@galaxy.uci.agh.edu.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.onet.pl!lublin.pl!news.lublin.pl!not-for-mail
From: Grzegorz Szyszlo <znik@wbc.lublin.pl>
Newsgroups: pl.comp.lang.perl
Subject: Re: hash w hashu i jeszcze tablcia skalarów
Date: Thu, 21 Oct 2004 10:21:09 +0200
Organization: lubman
Lines: 73
Message-ID: <cl7rj4$jhg$1@news.lublin.pl>
References: <1098302099.409440@vax.ustronie.pw.edu.pl> <cl6h30$agm$1@galaxy.uci.agh.edu.pl>
NNTP-Posting-Host: user.wbc.lublin.pl
Mime-Version: 1.0
X-Trace: news.lublin.pl 1098346916 20016 212.182.104.10 (21 Oct 2004 08:21:56 GMT)
X-Complaints-To: abuse@news.lublin.pl
NNTP-Posting-Date: Thu, 21 Oct 2004 08:21:56 +0000 (UTC)
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4) Gecko/20030721 Debian/1.4-1.nobse.2
X-Accept-Language: pl, en-us
In-Reply-To: <cl6h30$agm$1@galaxy.uci.agh.edu.pl>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit