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 = ??
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
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];
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
Danke.. ja die } Klammer hatte ich vergessen zu kopieren. Auch mit dem chop keine Änderung. Die variablen bleiben alle auf 0. Keine Fehlerwarnung!
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"; |
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.