#!/usr/bin/perl use strict; use warnings; use DirHandle; use DBI; ##### Variablen ##### my $csv_dir = "csv_all"; ##### Programm ##### my $dbh = DBI ->connect('DBI:mysql:table', 'user', 'pw', {PrintError => 1}); my $dh = DirHandle->new($csv_dir); my @filelist = sort $dh->read(); foreach my $file (@filelist) { if($file =~ /extasc_cdr_(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})_(\d+).csv/) { my $id=$7; unless( test_db($id,$dbh) ) { &update_db($cvs_dir,$file,$id,$dbh); } else { print "-\n"; } } } $dbh->disconnect; close(DATEI); ##### Funktionen ##### sub test_db { my $id=shift(@_); my $dbh=shift(@_); my $sql_id_select = "SELECT * FROM csv_id WHERE csv_id=$id"; my $execute_select = $dbh->do($sql_id_select) or warn $dbh->errstr; return 0 if($execute_select eq "0E0"); return 1; } sub update_db { my $cvs_dir=shift(@_); my $file=shift(@_); my $id=shift(@_); my $dbh=shift(@_); # CSV-ID in Datenbank speichern my $sql_id_insert = "INSERT into csv_id VALUES('',$id)"; my $execute_insert = $dbh->do($sql_id_insert) or warn $dbh->errstr; print "ID: $id - File: $file\n"; # Warum machst du das so? #--> open(DATEI, "cat $csv_dir/$file |") or die "Fehler beim oeffnen von $file: $!\n"; # Öffne die Datei doch einfach so: open(DATEI, '<', "$csv_dir/$file") or die "Fehler beim oeffnen von $file: $!\n"; while() { chomp $_; my @spalten = split (/\,/, $_); # $a und $b sind reservierte Variablen, # die von perl bei "sort" verwendet werden. # Darum bitte nicht nutzen. my $s_a = $spalten[0]; my $s_b = $spalten[1]; my $s_c = $spalten[2]; # kann man auch so schreiben: # my ($s_a,$s_b,$s_c)=@spalten; # ... # Passiert hier noch was? # ... } }