2011-01-10 6 views
0

Ich versuche, einen einfachen Perl-Parser für einige CSV-Dateien zu schreiben/zu lernen, die ich habe, und ich brauche etwas Hilfe.Perl - Scannen von CSV-Dateien nach Zeilen, die den benutzerdefinierten Kriterien entsprechen?

In einem Verzeichnis habe ich eine Reihe von datumsindexierten CSV-Dateien in Form von Text-Date.csv. Das Datum ist in Form von Monat-TT-JJJJ (z. B. Januar-07-2011). Für jeden Wochentag wird eine CSV-Datei generiert.

Das Perl-Skript sollte jede Datei nach einer bestimmten Zeile suchen, die einem vom Benutzer eingegebenen Kriterium entspricht, und diese Zeile zurückgeben. Jede Zeile ist Aktienkursdaten mit unterschiedlichen Aktien in verschiedenen Zeilen. Was das Skript tun sollte, ist den Preis eines bestimmten Bestands (z. B. IBM) über alle Daten, die CSVs generiert wurden, zurückzugeben.

Ich habe den Parser für eine bestimmte CSV/Datum, die ich wählen, aber ich möchte in der Lage sein, die Zeile in allen CSVs zu pflücken. Auch wenn ich den IBM-Preis für jede veraltete CSV-Datei drucke, möchte ich das Datum neben dem Preis anzeigen (z. B. Januar-07-2011 IBM 147.93).

Können Sie mir dabei helfen?

+0

Wie einfach ist das Muster, das Sie zusammenbringen? Klingt wie ein einfacher Grep, der hier alles macht, was du willst. –

+1

Was ist die Frage, die du im Titel erwähnst? Sie sind sicher, konstruktive Antworten zu erhalten, wenn Sie [Ihren Code bekanntgeben und auf die Schwierigkeiten hinweisen, die Sie damit haben] (http://stackoverflow.com/posts/4650787/edit). – daxim

+0

Ich reparierte mit opendir und foreach ... – racket99

Antwort

1

Verwenden Sie zum Analysieren von CSV-Dateien das Modul Text::CSV.

Es ist komplexer zu entscheiden, wie Sie die Kriterien anwenden werden - Sie müssen bestimmen, was der Benutzer angibt, und herausfinden, wie das in Perl-Code übersetzt wird, der die Bedingung richtig bewertet.

2

Wenn Ihre Frage ist, wie man eine Reihe von Dateien crawlen und einige Funktionen auf jedem ausführen, möchten Sie wahrscheinlich File::Find. Um CSV zu analysieren, verwenden Sie definitiv Text::xSV und keinen benutzerdefinierten Parser. Es gibt mehr zum Analysieren von CSV als das Aufrufen von Split (",").

+0

aber immer noch besser verwenden Text :: CSV; –

+0

Wirklich? Ich habe das CSV-Parsing seit über einem Jahr nicht mehr gemacht, aber es schien mir, dass xSV ein bisschen besser war. Wahrscheinlich ist beides ausreichend. – jiggy

Verwandte Themen