Perl a Titanik (doufam, ze naposled)
David Rohleder
davro na ics.muni.cz
Čtvrtek Srpen 19 14:29:00 MEST 1999
snajdr na firma.seznam.cz (Petr Snajdr) writes:
> On Thu, 19 Aug 1999, Michael Mraka wrote:
>
> > Panove,
> > nechci vam rusit vase kruhy... (tahle debata sem _fakt_ nepatri):
>
> Jako prave misto vypada konference perl na muni.cz, budiz vse jiz
> nadale smerovano tam.
>
> > % > # a = (1,2,3,(1,2,3,4,(1,2,3,4,("x","y","z")),5,6,7),4,5,6)
> > % >
> > % > tohle je obycejny seznam zapsatelny normalne jen jako:
> > % >
> > % > @a = (1,2,3,1,2,3,4,1,2,3,4,"x","y","z",5,6,7,4,5,6);
> > %
> > % Tak to tedy neni. To neni seznam, ale seznam, ktery
> >
> > Ale je :-)
>
> Pak by me ovsem zajimalo
> jak ziskam toto: ("x","y","z")
musi se pouzit anonymni pole. [ "x","y","z"]
>
> > % obsahuje jine seznamy, ktere obsahhuji jine seznamy.
> > % Takto jse z toho udelal neco ponekud jineho.
> > %
> > % > # Tak a kdo zan perl muze mi poradit jak vypsat
> > % > # prvek obsaujici "y". Pokud se nepletu
> > % > # tak a[3][5][5][2]. jsem zvedav kolik lidi
> > % :)
> > %
> > % > # co si mysli, ze umi perl to zvladne na prvni pokus (nebo
> > % > # alespon na 3) :-)
> > % >
> > % > $a[12]
> >
> > $ perl -e '@a = (1,2,3,(1,2,3,4,(1,2,3,4,("x","y","z")),5,6,7),4,5,6);
> > print $a[3][5][5][2],"\n";'
>
> Vypada to logicky, ale nefunguje to. To je mimo jine i ono zminovane
> svadeni k chybam.
Vypada to logicky pro toho, kdo perl neumi. Kdo neumi perl nebude
pouzivat takove konstrukce.
>
> > $ perl -e '@a = (1,2,3,(1,2,3,4,(1,2,3,4,("x","y","z")),5,6,7),4,5,6);
> > print $a[12],"\n";'
> > y
>
> Tohle zase funguje, ale kdyz to clovek nevi tak mu to moc logicke
> neprijde a ani to moc logicke neni.
>
Pokud prijmete "(" jako spojovani seznamu, tak to neni az tak nelogicke.
> > % ale muzeme to jeste o neco zeslozitit:
> > %
> > % a = (0, 1, 2, 3, (0, 1, {'addr': '192.168.0.1', 'os': 'linux', 'name':
> > % 'internal.cz', 'users': ('karel', 'pavel', 'petr', 'alena')}))
> >
>
> S napetim ocekavam tu konstrukci, ktera z toho dostane jmeno 'petr'
> tj. neco jako: a[4][3]['users'][2] :-)
>
#!/usr/bin/perl -w
@a = (0, 1, 2, 3, (0, 1, {'addr' => '192.168.0.1', 'os'=> 'linux', 'name'=> 'internal.cz', 'users'=> ['karel', 'pavel', 'petr', 'alena']}));
print $a[6]->{users}[2],"\n";
Coz je velmi logicke pokud pripustim, ze "(" pouze spojuje seznamy.
Povedlo se mi to na prvni pokus, hned potom, jak jsem opravil vsechny
chyby v zadani.
--
-------------------------------------------------------------------------
David Rohleder davro na ics.muni.cz
Institute of Computer Science, Masaryk University
Brno, Czech Republic
-------------------------------------------------------------------------
Další informace o konferenci Perl