Thread CSV umwandeln
(38 answers)
Opened by lukastonner at 2010-06-18 16:31
Versuch es mal so:
Code (perl): (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 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 #!/usr/bin/perl use strict; use warnings; use Net::FTP; use lib "/home/bm4381/perlmodule/"; use Text::CSV; #######ftp Zugangsdaten und Zielverzeichnis festlegen######## my $host = "ftp.1234.de"; my $user = "ich"; my $pass = "1234"; my $dest_dir = "/home/daten/test/"; my $ftp = ""; my @dir = ""; my $filename = ""; my $csv = ""; # Eingabetrenner my $in_sep=','; # Ausgabetrenner my $out_sep="\t"; $ftp = Net::FTP->new($host, Debug => 0) or die "Es konnte keine Verbindung zu $host: $@ aufgebaut werden"; $ftp->login($user, $pass) or die("Login schlug fehl: ".$ftp->message); $ftp->cwd("/data/outgoing/") or die "Ziel-Verzeichnis nicht gefunden", $ftp->message; foreach my $filename ($ftp->ls('*.*')){ my $ouput_filename="$dest_dir$filename"; # Datei setzen, die gelesen werden soll if(my $data=$ftp->retr($filename)){ my $csv=Text::CSV->new({ sep_char => $in_sep }); my $out_csv=Text::CSV->new({ sep_char => $out_sep }); open my $ofh, '>', $ouput_filename or die "Could not open $filename: $!"; while ( my $columns = $csv->getline( $data ) ) { # Trenner im zweiten Feld ändern $columns->[1]=~s/\s+/T/g; $columns->[1]=~s!/!-!g; # alles wieder zusammenfügen $out_csv->combine(@$columns); print $ofh $out_csv->string()."\n"; } # Verbindung schließen $data->close(); close $ofh; } } print "\n Download beendet \n"; $ftp->quit(); EDIT: Tippfehler beseitigt Last edited: 2010-06-21 16:50:37 +0200 (CEST) |