[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.