[Perl] matrices
Salvador Ortiz Garcia
sog@msg.com.mx
24 Jan 2002 04:45:08 -0600
On Wed, 2002-01-23 at 17:26, aureliano wrote:
> Hola gente :)
>=20
> Estoy viendo algo de codigo y probando algunas cosillas y me encuentro=20
> con problemas con las matrices o array bidireccionales.
En perl, un arreglo bidimencional es una ilusi=F3n =F3ptica, en realidad so=
n
arreglos de referencias a arreglos.
Va con ajustitos:
=20
$archlog =3D '/var/log/squid/access.log' ;
open (A, $archlog) or die "No puedo abrir $archlog, \n";
#@temporal =3D ();
$indice =3D 0;
=20
while($line =3D <A>){
chomp($line);
$line =3D~ s/ +/ /;
@fields=3Dsplit(/ /,$line);
$hora =3D localtime($fields[0]); # para qu=E9 @hora si es un scalar?
# Si al fin de cuentas @todo s=F3lo guarda referencias
# para qu=E9 creo un temporal, mejor creo la referencia de una vez.
$todo[$indice++] =3D [ $fields[7], $fields[2], $hora ];
# foreach $cont (0..@temporal){
# $todo[$indice][$cont] =3D $temporal[$cont];
# }
}
close A;
=20
# Imprimo todo el contenido de la matriz=20
# --------------------------------------------------
foreach $x (0..@todo) { # @{$todo} es el arreglo refereciado por $todo
# que no aparece por ning=FAn lado.
foreach $y (0..@{$todo[$x]}) {
print "$x $y --> $todo[$x][$y] \n" ;
}
}
Saludos
Salvador Ortiz.