Salve, è solo da poco tempo che sono nel mondo di perl ed ho questo problema "Can't call method "finish" on an undefined value" quando lancio lo scipt da shell di unix.
Il pezzo di codice è:
my $dbh = "";
sub dbconnect {
my $dbh = DBI->connect( "DBI:mysql:database=$database;host=$hostname",$dbu ser, $dbpasswd,
{ RaiseError => 1, PrintError => 1, AutoCommit => 0,LongReadLen => 128, LongTruncOk => 'true'});
warn DBI::errstr if $DBI::err;
return $dbh;
}
sub dbdisconnect {
$dbh->disconnect;
}
$dbh=dbconnect ();
$filename = $ARGV[0];
$CodStaz = $ARGV[1];
my $select_str;
open(FILE, "< $filename") || die "Errore! Ti sei ricordato del file.txt? E il CodStaz?\n\n";
while ($riga = <FILE>) {
next if !($riga =~ /^\d\d\\s\d\\s\d\d\d\d/);
my @linea = split (" ", $riga);
my $data_ok = sprintf ("%04d-%02d-%02d %02d:%02d",$linea[2],$linea[1],$linea[0],$linea[3],$linea[4]);
$select_str = "INSERT INTO dati (CodStaz,CodSens,CodMarcaSens,Valore,DataOra,CodTi po,Serie) VALUES (\"$CodStaz\",\"1\",\"0\",\"$linea[5]\",\"$data_ok\",\"22\",\"1\")";
$sth = $dbh->prepare($select_str);
warn DBI::errstr if $DBI::err;
$sth->execute ();
warn DBI::errstr if $DBI::err;
#print "$linea[1] @str_ora\n";
#print "INSERT INTO dati (CodStaz,CodSens,CodMarcaSens,Valore,DataOra,CodTi po,Serie) VALUES ($CodStaz,1,0,$linea[2],$data_ok,22,1\n";
}
$sth->finish;
close (FILE);
dbdisconnect();
Se qualcuno è così gentile da dirmi se la regexp "next if !($riga =~ /^\d\d\\s\d\\s\d\d\d\d/);" è corretta.....
sicuramente avrò fatto altri errori....
Grazie per ora.