Parsen in Perl, CSV oder XML?

Squeery

Mitglied
Moin,

ich sitze moment vor einer Aufgabe die mir ein wenig Kopfschmerzen bereitet.

Vieleicht kann mir von euch jemand helfen.

Es geht darum das ich ein Tool in Perl schreiben will, das Daten ausliest und aufbereitet.
Unter den Punkt aufbereiten fallen auch umrechnungen.

Jetzt hab ich die Wahl ob ich Daten in CSV oder XML haben will.
Allerdings können die Dateien sehr groß werden, pro Tag bis zu 80.000 Werte.

Wie würdet ihr das angehen? XML parsen, wobei da das Problem besteht das die Dateien eventuell zu groß sind? Oder eher sich mit CSV rumschlagen?

Ich habe mich mal am Perl-Modul XML-Twig versucht, allerdings funktioniert das hinten und vorne nicht. Nicht mal das Tutorial läuft ^^

Bin für Tipps echt Dankbar :)
 
Echte Problembeschreibungen wären besser. *Was* funktioniert mit XML::Twig nicht?

Wenn Du Dich mit CSV rumschlagen willst, kannst Du auch DBI mit DBD::CSV verwenden. So kannst Du auf die CSV wie auf normale Datenbanken zugreifen...
 
Also mittlerweile arbeite ich mit CSV und lese die Dateien Zeile für Zeile ein.
Bei xml::twig hatte ich das Problem das er mir vom Root-Knoten aus immer direkt in die Werte sprang, nicht nach der Reihe, sondern einfach rein.

Einzige Sache die mich momentan mit CSV noch stört ist die Geschwindigkeit, aber da muss ich noch ein wenig an der Verarbeitung.

Gibts eigentlich zufällig eine Funktion die mir immer die neueste CSV-Datei raussucht?
 
Ohne Code lässt sich relativ wenig aussagen! Und auch die Gegebenheiten wären gut zu erfahren.

Die "neueste" CSV-Datei kann man so bekommen:

Code:
#!/usr/bin/perl

use strict;
use warnings;

my $directory = '/path/to/dir/';

# lese die Verzeichniseinträge
opendir my $dirh, $directory or die $!;
my @csv_files = grep{ /\.csv$/ }readdir $dirh; # nur .csv
closedir $dirh;

# sortiere nach Alter
my ($newest) = sort{ -M $directory . '/' . $b <=> -M $directory . '/' . $a }@csv_files;

print "Die neueste CSV-Datei: $newest\n"
(ungetestet)

Allgemeines darüber, wie man in Foren fragt: http://wiki.perl-community.de/bin/view/Wissensbasis/AllgemeinesWieFrageIchbeiPerlCommunity
 
Danke erstmal für die nette Unterstützung.

Also ich beschreibe mal das ganze:
Ich habe CSV-Dateien mit Messergebnissen, alle 24 Stunden wird eine Datei automatisch angelegt mit den Messergebnissen der letzten 24 Stunden. Diese Daten möchte ich einlesen und teilweise mittels HTML::Template anzeigen, aber auch Berechnungen damit durchführen und Diagramme generieren. Das mit den Diagrammen funktioniert mittels GD::Graph ganz gut, nur von der Bildqualität her sieht es nicht so toll aus.
Grundsätzlich sollte immer die aktuelle Datei geholt und mit diesen Daten weitergearbeitet werden. Die Idee DBD::CSV ist echt gut, ich werde das mal ausprobieren.

Vieleicht noch kurz zum Hintergrund, das Tool ist Teil meiner Diplomarbeit die ich im moment schreibe, es ist zwar ein kleiner Teil, liegt mir aber sehr am Herzen. Das heisst ich möchte das da was gut brauchbares bei rauskommt um auch was gutes vorzeigen zu können.
 
Zurück