Thread Daten auslesen und mit Hash in andere Datei eintragen lassen (14 answers)
Opened by J0ke at 2016-04-14 10:27

Raubtier
 2016-04-14 14:54
#184449 #184449
User since
2012-05-04
1054 Artikel
BenutzerIn

user image
2016-04-14T12:10:22 J0ke
Hab jetzt noch einiges verändert.
Wie findet ihr das hier?

Code (perl): (dl )
1
2
open (DATEI, "$druck") or die "Datei konnte nicht geoeffnet werden: $!";
while (my $line = <DATEI>) {


Gegenvorschlag:
Code (perl): (dl )
1
2
open (my $DATEI, "<", $druck) or die "Datei konnte nicht geoeffnet werden: $!";
while (my $line = <$DATEI>) {

Vielleicht die Variable auch noch besser benennen, z.B. $csvFH oder wie auch immer. Muss/sollte auch nicht in all-caps sein.

Quote
Code (perl): (dl )
        my @zeile= split ';', $line;


Ich würde die Variable besser @cols nennen - es sind ja Spalten. Und weißt du sicher, dass keine Semikolon in den Datenfeldern vorkommen?

Quote
Code (perl): (dl )
1
2
3
4
5
6
        $studio{$zeile[0]}{studioname}=$zeile[1];
        $studio{$zeile[0]}{pass1}=$zeile[2];
        $studio{$zeile[0]}{pass2}=$zeile[3];
        $studio{$zeile[0]}{beauty}=$zeile[4];
        $studio{$zeile[0]}{andere}=$zeile[5];
}


Du könntest hier lokal den Hash einmal erzeugen und dann 1x in in %studio einfügen.
Code (perl): (dl )
1
2
3
my %rowHash;
@rowHash{qw(studioname pass1 pass2 beauty andere)} = @cols[1..5];
$studio{$cols[0]} = \%rowHash;

oder explizit:
Code (perl): (dl )
1
2
3
4
5
6
7
$studio{$cols[0]} = {
    studioname => $cols[1],
    pass1 => $cols[2],
    pass2 => $cols[3],
    beauty => $cols[4],
    andere => $cols[5],
};


Beim Schreiben am Ende dann wieder der Hinweis auf lexikalische Dateihandles.
Last edited: 2016-04-14 14:57:36 +0200 (CEST)

View full thread Daten auslesen und mit Hash in andere Datei eintragen lassen