Forum: PC-Programmierung Perl: Datei zeilenweise einlesen und Parameter zuweisen.


von Gabriel (Gast)


Lesenswert?

Hallo, möchte in Perl eine dataincsv zeilenweise einlesen und die 
Parameter an meine Variablen übergeben:

Auszug datain.csv:

100, 10, 1
200, 18, 2



Perl:

$datei = "datain.csv";

open(filein, $datai);

X = ??
Y = ??
Z = ??

von Joachim (Gast)


Lesenswert?

Hallo

Guugel mal nach split.

@feld = split(/,/, $datei);

$x = $feld[0];
$y = $feld[1];
$z = $feld[2];

Ich hoffe, die Syntax ist einigermaßen richtig.

Gruß
Joachim

von Gabriel (Gast)


Lesenswert?

Danke - scheint bei mir allerdings nicht laufen zu wollen..

hier nochmals mein code:



#!/usr/bin/perl



$file1 = "dataout.txt";

open(fout, ">$file1");

$file2 = "datain.txt";

unless( open(fin, "<$file2") ) {
die "error: could not open file '$file2':$!\n";
} # if

while($line = <fin>){

@var = split(/,/, $line);


$X =  $var[0];
$C =  $var[1];
$Zs = $var[2];

von Joachim (Gast)


Lesenswert?

Hallo

Irgendwelche Fehlermeldungen?
Zumindest sollte irgendwas kommen, daß die abschließende Klammer }
von while fehlt.

Und als erstes ind die while-Schleife noch
chop ($line);
einfügen, dann werden die Zeilenabschließenden <\n> abgeschnitten.

Gruß
Joachim

von Gabriel (Gast)


Lesenswert?

Danke..

ja die } Klammer hatte ich vergessen zu kopieren.
Auch mit dem chop keine Änderung.

Die variablen bleiben alle auf 0. Keine Fehlerwarnung!

von Toni Holiday (Gast)


Lesenswert?

Der Thread ist zwar schon alt, aber vielleicht interessiert es ja noch 
jemanden. Perl lebt von regulären Ausdrücken, daher sollte man sie auch 
nutzen. Mein Vorschlag:
1
# Messwertlisten
2
@x = ();
3
@y = ();
4
@z = ();
5
6
while(defined($Zeile = <>))
7
{
8
    if ($Zeile =~ m/(\d*) ?, ?(\d*) ?, ?(\d*)\s*/)
9
    {
10
        push(@x,$1);
11
        push(@y,$2);
12
        push(@z,$3);
13
    }
14
}
15
16
# Ausgabe aller Werte
17
print "Alle Werte:\n@x\n@y\n@z";

von Toni Holiday (Gast)


Lesenswert?

Ach ja, eines habe ich noch vergessen. Der Name der Datei kann jetzt 
beim Starten des Skriptes als Parameter übergeben werden:

perl -w Skript.pl datain.csv

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.