Posted By: RoboShim (ICQ #: 166 703 40) on 'CZscripts'
Title: Re: Matice
Date: Thu Dec 17 10:08:11 1998
> Zkusils tu matici volat jako
> $Matice[3][5] = 7; ? :-)
> Ono totiz $Matice[3,5] neni prvek matice (=pole poli)
> ale prvek hashe s klicem "3,5"...
*** Na zacatek, hashe pouzivaji slozene zavorky a ne hranate na
zadani klice, takze hash s klicem "3,5" by se zapsal $a{"3,5"} a ne
$a[3,5]. Podle toho co jsem zkousel:
#!/usr/bin/perl
$a[0,0]="a";print "",@a,"n";
$a[0,1]="b";print "",@a,"n";
$a[1,0]="1";print "",@a,"n";
$a[1,1]="2";print "",@a,"n";
for ($i=0;$i<2;$i++) {
for ($j=0;$j<2;$j++) {
print "$a[$i,$j] ";
};
print "n";
};
haze nasledujici vysledky
a
ab
1b
12
1 2
1 2
a z toho je videt, ze ignoruje prvni index a bere az druhy AA KRUCI, ted me to
napadlo, co se deje. V PERLu jako i v C je carka operatorem zapomenuti, takze
v tech hranatych zavorkach se vyhodnoti prvni cislo a potom se jako index do
pole pouzije to druhy cislo. Takze jsem zkusil pouzit nasledujici:
#!/usr/bin/perl
$a[0][0]="a";print "",@a,"n";
$a[0][1]="b";print "",@a,"n";
$a[1][0]="1";print "",@a,"n";
$a[1][1]="2";print "",@a,"n";
for ($i=0;$i<2;$i++) {
for ($j=0;$j<2;$j++) {
print "$a[$i][$j] ";
};
print "n";
};
a vysledek je, zda se, spravnej:
ARRAY(0x80b9fe0)
ARRAY(0x80b9fe0)
ARRAY(0x80b9fe0)ARRAY(0x80ba1fc)
ARRAY(0x80b9fe0)ARRAY(0x80ba1fc)
a b
1 2
a funguje to i v DOSu:-) Jinak jde o to, ze se vytvari pole, ktere obsahuje
odkazy na jina anonymni pole. Vytvareni a prace s anonymnimi poli viz.
man perlref
na linuxu nebo v knizce o PERLu (ted nevim, jak se presne jmenuje).
Pripadne dotazy se budu snazit zodpovedet.
Cau.
RoboShim.