mikrocontroller.net

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


Autor: Gabriel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 = ??

Autor: Joachim (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Gabriel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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];

Autor: Joachim (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Gabriel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke..

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

Die variablen bleiben alle auf 0. Keine Fehlerwarnung!

Autor: Toni Holiday (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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:
# Messwertlisten
@x = ();
@y = ();
@z = ();

while(defined($Zeile = <>))
{
    if ($Zeile =~ m/(\d*) ?, ?(\d*) ?, ?(\d*)\s*/)
    {
        push(@x,$1);
        push(@y,$2);
        push(@z,$3);
    }
}

# Ausgabe aller Werte
print "Alle Werte:\n@x\n@y\n@z";

Autor: Toni Holiday (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.