"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

[PERL] Mehrdimensionales Array ?

Hansmaulwurf 18.03.2009 - 21:16 3599 3
Posts

Hansmaulwurf

u wot m8?
Avatar
Registered: Apr 2005
Location: VBG
Posts: 5639
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:

Code: PHP
    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

Sinnvolle Beschreibung für das ganze hab ich leider auch nicht gefunden :(

bin für jede Hilfe dankbar. :)



Edit:
Code: PHP
#!/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
Avatar
Registered: Feb 2001
Location: Pregarten (OÖ)
Posts: 485
also sollte es funktionieren:
Code: PHP
for(my $y=0;$y<60;$y++) 14:     
{
   my @personal = split(/;/, $daten[$y]);
   $matrix[$y] = @personal;
}

Hansmaulwurf

u wot m8?
Avatar
Registered: Apr 2005
Location: VBG
Posts: 5639
Danke für den Tipp.
Der hat zwar nicht funktioniert, mich aber auf die richtige Fährte gebracht ;)

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 :)

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

Moderator
Hoffnungsloser Optimist
Avatar
Registered: Mar 2000
Location: MeidLing
Posts: 11326
http://perldoc.perl.org/perllol.html hast du gelesen, oder?
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz