Thread Auslesen aus .txt bis Trennzeichen, wie?: Auslesen aus .txt bis Trennzeichen, wie? (51 answers)
Opened by Gast at 2005-10-26 14:09

renee
 2005-11-08 00:17
#59376 #59376
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
[quote=duerov,07.11.2005, 09:53][quote=renee,03.11.2005, 13:46]Mal ein Schnellschuss:
use Text::CSV_XS;[/quote]
Morgen zusammen
So, jetzt interssiert mich wie ich die ganze Geschichte mit Modulen lösen kann. Hab mir dazu mal das Modul Text::CSV runtergeladen und installiert. Verstanden habe ich aber nicht richtig wie ich es anwenden soll. Was gibt mir denn das Modul ans Hauptprogramm?
Das Grundprinzip ist mir klar, aber die Schnittstelle zwischen Modul und Hauptprogramm nicht.
PS. Hab versucht es mir hier begreiflich zu machen:
http://www.infos24.de/perle/handbuch/18_module.htm
Gruß
duerov[/quote]
Das use Text::CSV_XS laedt das Modul. Das ist das gleiche wie das include bei C/C++ oder das import bei Java. Damit sagst Du dem Hauptprogramm, dass Du dieses Modul verwenden moechtest.

Bildlich:
Du kannst ja auch nicht einfach so einen Festbraten kochen, sondern Du musst erstmal das Rezept lesen und damit in Dein Gehirn laden. Jetzt weisst Du, dass Du das Rezept anwenden kannst und wenn Du dann mal was kochen willst, dann kannst Du darauf zurueckgreifen, quasi ein neues Objekt der Klasse "Festbraten" erzeugen...

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# lade das Modul (siehe oben)
use Text::CSV_XS;

# Deklaration des Skalars $file und Initialisierung mit
# dem Pfad zu der CSV-Datei
my $file = '/pfad/zur/Datei.csv';
# Deklaration des Arrays @entries
my @entries;

# erzeugen des Text::CSV_XS-Objekts, mit der Eigenschaft
# ';' als Separator
my $parser = Text::CSV_XS->new({sep_char => ';'});

# oeffnen der CSV-Datei, bei Fehler, Fehlermeldung ausgeben
# und Programm beenden. In $fh ist der Filehandle, was in
# vielen Programmen einem DATA oder FH , ... entspricht
open(my $fh,"<$file") or die $!;

#Solange das Ende der Datei nicht erreicht wurde
while(my $line = <$fh>){

# Wenn das Parsen der Zeile erfolgreich war (Aufruf der
# Methode parse() des Objekts). Der -> entspricht hier
# dem . bei Java
if($parser->parse($line)){

# speichere die geparsten Felder in @fields (Aufruf der
# Methode fields() aus Text::CSV_XS
my @fields = $parser->fields();

# fuege eine Arrayreferenz mit der kompletten Zeile und
# dem letzten Feld als Inhalt an das Ende des @entries-
# Arrays ein
push(@entries,[$line,$fields[-1]]);
}
}
close $fh;

# sortiere nach dem letzten Feld (sort-Teil) und gebe immer die komplette
# Zeile zurueck (map-Teil)
my @sorted = map{$_->[0]}sort{$a->[1] <=> $b->[1]}@entries;

#Ausgabe
print $_,"\n" for(@sorted);
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/

View full thread Auslesen aus .txt bis Trennzeichen, wie?: Auslesen aus .txt bis Trennzeichen, wie?