Esta es la solución obvia:
Using perl Syntax Highlighting
my $archivo = "pais,argentina,capital federal,prueba\npais2,argentina,buenos aires,prueba2";
my(@array1, @array2, @array3, @array4);
for my $linea ( split /\n/, $archivo) {
my @campos = split /[,]/, $linea;
push @array1, $campos[0];
push @array2, $campos[1];
push @array3, $campos[2];
push @array4, $campos[3];
}
use Data::Dumper;
print Dumper \@array1;
print Dumper \@array2;
print Dumper \@array3;
print Dumper \@array4;
__END__
Coloreado en 0.004 segundos, usando
GeSHi 1.0.8.4
Y esta es la solución corta:
Using perl Syntax Highlighting
#! /usr/bin/perl
my $archivo = "pais,argentina,capital federal,prueba\npais2,argentina,buenos aires,prueba2";
my @cubo; # Aquí guardaremos la estructura bidimensional
for ( split /\n/, $archivo ) {
push @cubo, [ split /[,]/, $_ ];
}
use Data::Dumper;
print Dumper \@cubo;
for my $linea (@cubo) {
print join('-', @{$linea}), "\n";
}
__END__
$VAR1 = [
[
'pais',
'argentina',
'capital federal',
'prueba'
],
[
'pais2',
'argentina',
'buenos aires',
'prueba2'
]
];
pais-argentina-capital federal-prueba
pais2-argentina-buenos aires-prueba2
Coloreado en 0.002 segundos, usando
GeSHi 1.0.8.4
Construimos un cubo (mejor dicho, una matriz de dos dimensiones), en que las líneas de la primera dimensión son las distintas líneas del fichero. En cada una de ellas, hay un
array que guarda los distintos valores.
Lo hacemos así, porque luego facilita la salida, con un simple join().
Para acceder al tercer elemento de la segunda línea, escribimos:
print $cubo[1][2];.