[PERL] Mehrdimensionales Array ?
Hansmaulwurf 18.03.2009 - 21:16 3714 3
Hansmaulwurf
u wot m8?
|
So, folgendes Problem. Muss in Perl ein Mehrdimensionales Array bearbeiten, bin Anfänger in PERL und hab keine Ahnung wie. Das war mal mein Versuch: use IO::Handle;
#Öffnen der Files
my $in = IO::Handle->new;
my $out = IO::Handle->new;
open $in, "<Tabelle.csv" or die "Quelle konnte nicht geöffnet werden! $!";
open $out, ">output.dnd" or die "Output konnte nicht erstellt werden! $!";
#Definition der Variablen
my @daten = ($in->getlines());
my @matrix = {[],[]};
for(my $y=0;$y<60;$y++)
{
my @personal = split(/;/, $daten[$y]);
print @personal;
push(@matrix, @personal );
}
print "Hier ist Sense";
print @matrix;
#print "Aloha";
print "$matrix[2600]";
close($in)
Wie zu sehen ist, hab ich versucht, eine ".csv" auszulesen, und selbige in ein Array zu überführen. In meinem Fall hängt er sie aber nur an das array "matrix" an. push geht auch nur mit nem Array nicht mit nem Skalar, im Endeffekt hab ich nur eine lange Wurst. Ich dachte wenn ich dem Array zwei Dimensionen geb, kann ich es ohne Probleme anhängen, aber dem ist anscheinend nicht so ![:D](/images/smilies/biggrin.gif) Sinnvolle Beschreibung für das ganze hab ich leider auch nicht gefunden ![:(](/images/smilies/frown.gif) bin für jede Hilfe dankbar. ![:)](/images/smilies/smile.gif) Edit: #!/usr/local/bin/perl -w
use strict;
my @zeile_1 = ( 'a', 'b', 'c' );
my @zeile_2 = ( 'd', 'e', 'f' );
my $ref_zeile_1 = \@zeile_1;
my $ref_zeile_2 = \@zeile_2;
my @matrix = ( $ref_zeile_1, $ref_zeile_2 );
Das war der Sample-Code an dem ich mich versucht hab zu orientieren, aber ich kann ja nicht händisch 60 Zeilen machen ?
Bearbeitet von Hansmaulwurf am 18.03.2009, 21:18
|
Triple-X
Addicted
|
also sollte es funktionieren: for(my $y=0;$y<60;$y++) 14:
{
my @personal = split(/;/, $daten[$y]);
$matrix[$y] = @personal;
}
|
Hansmaulwurf
u wot m8?
|
Danke für den Tipp. Der hat zwar nicht funktioniert, mich aber auf die richtige Fährte gebracht ![;)](/images/smilies/wink.gif) Das ganze war insofern falsch, als das ich split einfach nicht auf Skalare anwenden kann, sondern nur auf Arrays, und da hat's dann nen Hund gehabt beim übertragen auf die matrix. Wenn ich den String mit =~ untersuche und in ein 1D-Array speicher, und dass dann transformier, komme ich zu einem brauchbaren output ![:)](/images/smilies/smile.gif) btw. Falls es wer weiß. Kann ich mehrdimensionale Arrays nicht "einfach" ausgeben ? Ich hab immer nur die Pointer der einzelnen Tabellen, wenn ich aber gezielt nen Wert ansprech geht's sowieso
|
that
Hoffnungsloser Optimist
|
|