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