Leser: 25
1
2
3
4
5
6
7
8
9
10
11
$ftp = Net::FTP->new($host, Debug => 0)
or die "Es konnte keine Verbindung zu $host: $@ aufgebaut werden", $ftp->message;
$ftp->login($user, $pass);
$ftp->cwd("/data/outgoing/")
or die "Ziel-Verzeichnis nicht gefunden", $ftp->message;
@dir = $ftp->ls('*.*');
foreach(@dir){
$filename=$_;
$ftp->get($filename, "@dest_dir$filename");
};
$ftp->quit();
my $filename = grep defined, /(?:^|,) (?: "([^"]+)" | ([^,]+))/xg;
2010-06-18T14:31:58 lukastonneruse Text::CSV ist auf meiner Solaris Maschine nicht installiert.
2010-06-18T14:56:35 lukastonnerKommas kommen ne Menge vor, die möchte ich ja durch Tab ersetzen....
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
$ftp->get($filename, $local_file); open my $fh, '<', $local_file or die "Could not open $local_file: $!"; open my $ofh, ">", $local_file_converted or die "Could not open $local_file_converted: $!"; # wenn Text::CSV use Text::CSV; my $csv = Text::CSV->new(); my $ocsv = Text::CSV->new({ sep_char => ';' }); # --- while (my $line = <$fh>) { # wenn Text::CSV my $status = $csv->parse($line); # ggfs. fehler abfangen my @columns = $csv->fields(); $status = $ocsv->combine(@columns); # ggfs. fehler abfangen $line = $ocsv->string(); # wenn manuell $line =~ tr/,/;/; # --- print $ofh $line; } close $fh; close $ofh;
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
$ftp = Net::FTP->new($host, Debug => 0)
or die "Es konnte keine Verbindung zu $host: $@ aufgebaut werden", $ftp->message;
$ftp->login($user, $pass);
$ftp->cwd("/daten/outgoing/")
or die "Ziel-Verzeichnis nicht gefunden", $ftp->message;
@dir = $ftp->ls('*.*');
foreach(@dir){
$filename=$_;
$ftp->get($filename, "@dest_dir$filename");
#ab hier soll umgewandelt werden
open my $fh, '<', "@dest_dir$filename" or die "Could not open $filename: $!";
open my $ofh, ">", "@dest_dir$filename_converted" or die "Could not open $filename_converted: $!";
while (my $line = <$fh>) {
my $status = $csv->parse($line); # ggfs. fehler abfangen
my @columns = $csv->fields();
$status = $ocsv->combine(@columns); # ggfs. fehler abfangen
$line = $ocsv->string();
$line =~ tr/,/;/;
print $ofh $line;
close $fh;
}
}
print "\n Download beendet \n";
$ftp->quit();
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
#!/usr/bin/perl
use strict;
use warnings;
use Net::FTP;
#use Text::CSV;
#######ftp Zugangsdaten und Zielverzeichnis festlegen########
my $host = "ftp.1234.de";
my $user = "ich";
my $pass = "1234";
my @dest_dir = "/home/data/incoming/";
my $ftp = "";
my @dir = "";
my $filename = "";
my $filename_converted = "";
my $csv = "";
my $ocsv = "";
my $line = "";
$ftp = Net::FTP->new($host, Debug => 0)
or die "Es konnte keine Verbindung zu $host: $@ aufgebaut werden", $ftp->message;
$ftp->login($user, $pass);
$ftp->cwd("/daten/outgoing/")
or die "Ziel-Verzeichnis nicht gefunden", $ftp->message;
@dir = $ftp->ls('*.*');
foreach(@dir){
$filename=$_;
$ftp->get($filename, "@dest_dir$filename");
#ab hier soll umgewandelt werden
open my $fh, '<', "@dest_dir$filename" or die "Could not open $filename: $!";
open my $ofh, ">", "@dest_dir$filename_converted" or die "Could not open $filename_converted: $!";
while (my $line = <$fh>){
my $status = $csv->parse($line); # ggfs. fehler abfangen
my @columns = $csv->fields();
$status = $ocsv->combine(@columns); # ggfs. fehler abfangen
$line = $ocsv->string();
$line =~ tr/,/;/;
print $ofh $line;
close $fh;
}
}
print "\n Download beendet \n";
$ftp->quit();
2010-06-21T09:49:15 lukastonner[...]
sobald ich Text::CSV initialisiere gibt er mir ne wilde fehlermeldung "Can't locate Text/CSV.pm in @INC (@INC contains: /usr/per......"und das CPAN paket installieren geht glaub ich nicht (Adminrechte)
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
#!/usr/bin/perl use strict; use warnings; use Net::FTP; use Text::CSV; #######ftp Zugangsdaten und Zielverzeichnis festlegen######## my $host = "ftp.1234.de"; my $user = "ich"; my $pass = "1234"; my $dest_dir = "/home/data/incoming/"; my $src_dir="/sonstiges/test"; my $in_sep=';'; my $out_sep="\t"; my $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($src_dir) 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 ) ) { $out_csv->combine(@$columns); print $ofh $out_csv->string()."\n"; } # Verbindung schließen $data->close(); close $ofh; } } print "\n Download beendet \n"; $ftp->quit();
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
#!/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 = "";
my $in_sep=';';
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 ) )
{
$out_csv->combine(@$columns);
print $ofh $out_csv->string()."\n";
}
# Verbindung schließen
$data->close();
close $ofh;
}
}
print "\n Download beendet \n";
$ftp->quit();
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();
$colums->[1]=~s/\s+/T/gs;
$out_csv->combine(@$columns);
1 2 3
for my $index (0 .. scalar @$columns - 1) { $columns->[$index] = 999 if length $columns->[$index] == 0; }