Viele kleine Fehler in meinem erstem Perl Script
Hallo zusammen,
ich habe mir heute mein erstes Perl Script zusammen gebastelt.
Leider hat es noch einige Fehler und startet dem zufolge auch nicht.
Wäre echt nett wenn mal jemand von euch drüber schaut und mir sagt, wo die Fehler sind.
Vielen Dank im vorraus.
Kingpin90
ich habe mir heute mein erstes Perl Script zusammen gebastelt.
Leider hat es noch einige Fehler und startet dem zufolge auch nicht.
Wäre echt nett wenn mal jemand von euch drüber schaut und mir sagt, wo die Fehler sind.
Vielen Dank im vorraus.
Kingpin90
#! /usr/bin/perl
use strict;
use warnings;
use DBI;
my $user = 'username';
my $pass = 'userpasswort';
my $db = 'datenbankname';
my $host = 'localhost';
my $driver = “DBI:mysql:$db:$host“;
my $dbh = DBI->connect($driver,$user,$pass) or die $DBI::errstr;
my $quelle =
my $ziel =
my $aktuell = 1;
#########################################
#### Zieltabelle erstellen ####
#########################################
print "Erstelle Zieltabelle...";
my $erstellen = CREATE TABLE $ziel (
`ANREDE` varchar(10) default NULL,
`VORNAME` varchar(255) default NULL,
`NAME` varchar(255) default NULL,
`ZUSATZ` varchar(255) default NULL,
`STRASSE` varchar(50) default NULL,
`HAUSNR` varchar(10) default NULL,
`STRASSE HAUSNR` varchar(10) default NULL,
`ORTSTEIL` varchar(50) default NULL,
`D` varchar(1) default NULL,
`PLZ` varchar(5) default NULL,
`ORT` varchar(50) default NULL,
`TELZUSATZ` varchar(10) default NULL,
`VORWAHL` varchar(10) default NULL,
`TELEFON` varchar(30) default NULL,
`VORWAHL TELEFON` varchar(30) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
my $sth = $dbh->prepare($erstellen) or die $DBI::errstr;
$sth->execute() or die $DBI::errstr;
print "OK \n";
#########################################
#### Anzahl der Quelldaten ####
#########################################
print "Stelle Anzahl der Quelldaten fest...";
my $quelldaten = 'SELECT COUNT * FROM $quelle';
my $sth = $dbh->prepare($guelldaten) or die $DBI::errstr;
$sth->execute() or die $DBI::errstr;
$gesamt=$sth->fetchrow_array;
print "OK \n";
#########################################
#### Quelldaten laden ####
#########################################
print "Lade Quelldaten aus Tabelle...";
my $quelldaten = 'SELECT * FROM $quelle';
my $sth = $dbh->prepare($guelldaten) or die $DBI::errstr;
$sth->execute() or die $DBI::errstr;
$zeiger = $dbh->selectall_arrayref($quelldaten);
print "OK \n";
#########################################
#### Beginn der Datenverarbeitung ####
#########################################
print "Beginne mit der Verarbeitung der Daten...";
print "OK \n";
foreach $felder(@$zeiger)
{
@ergebnis=@$felder;
my $abfrage = INSERT INTO $ziel
SELECT
$quelle.ANREDE,
$quelle.VORNAME,
$quelle.NAME,
$quelle.ZUSATZ,
$quelle.STRASSE,
$quelle.HAUSNR,
$quelle.`STRASSE HAUSNR`,
$quelle.ORTSTEIL,
$quelle.D,
$quelle.PLZ,
$quelle.ORT,
$quelle.TELZUSATZ,
$quelle.VORWAHL,
$quelle.TELEFON,
$quelle.`VORWAHL TELEFON`,
FROM
$quelle
WHERE
$quelle.PLZ = $ergebnis[1] AND
$quelle.STRASSE = $ergebnis[2] AND
$quelle.HAUSNR = $ergebnis[3];
my $sth = $dbh->prepare($abfrage) or die $DBI::errstr;
$sth->execute() or die $DBI::errstr;
my $aktuell = $aktuell +1;
print "Bearbeite Datensatz $aktuell von $gesamt \n";
}
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 94061
Url: https://administrator.de/contentid/94061
Ausgedruckt am: 21.11.2024 um 21:11 Uhr
2 Kommentare
Neuester Kommentar
Hallo Kingpin90,
bevor ich ins Detail gehe, gibt's erstmal Schelte - nicht persönlich nehmen sondern drüber nachdenken:
Du schreibst, das wäre dein erstes Perl-Script. Ich halte es nicht für sinnvoll, direkt mit MySQL & Co. anzufangen. Auch wenn es unspektakulär erscheint, helfen Scripts wie "Hallo Welt", ein kleiner Rechner und sowas unheimlich weiter, um die Grundlagen zu erleernen. Denn dein geposteter Code zeugt davon, dass du diese nicht ansatzweise beherrschst. Der größte Teil deines Scripts macht einen eher gedankenlos zusammenkopierten Eindruck oder zumindest hast du da Beispielcode zusammengeschraubt, ohne ihn wirklich zu verstehen.
Außerdem gibt der Perl-Interpreter garantiert genügend Meldungen aus - erst recht dank deinem "use strict; use warnings;", selbst ohne wirkliche Fehler dürfte das schon ne ganze Menge werfen. Damit kannst du zunächst mal selber schauen und das wichtigste davon auch hier posten, um es möglichen Helfern einfacher zu machen.
Nun aber zu deinem Script, es gibt ein paar Dinge, die mir beim Überfliegen auffallen, ohne das Script selber zu testen:
Wieso wird einer Variablen in Z. 14/15 nach dem = plötzlich kein Wert mehr zugewiesen, und wieso werden Stattements da neuerdings nicht mehr mit ; abgeschlossen?
Wieso werden Strings in deinen Abfragen, die in Z. 25 respektive 87 beginnen, plötzlich nicht mehr in Gänsefüßchen gesetzt?
Grüße,
Nik
bevor ich ins Detail gehe, gibt's erstmal Schelte - nicht persönlich nehmen sondern drüber nachdenken:
Du schreibst, das wäre dein erstes Perl-Script. Ich halte es nicht für sinnvoll, direkt mit MySQL & Co. anzufangen. Auch wenn es unspektakulär erscheint, helfen Scripts wie "Hallo Welt", ein kleiner Rechner und sowas unheimlich weiter, um die Grundlagen zu erleernen. Denn dein geposteter Code zeugt davon, dass du diese nicht ansatzweise beherrschst. Der größte Teil deines Scripts macht einen eher gedankenlos zusammenkopierten Eindruck oder zumindest hast du da Beispielcode zusammengeschraubt, ohne ihn wirklich zu verstehen.
Außerdem gibt der Perl-Interpreter garantiert genügend Meldungen aus - erst recht dank deinem "use strict; use warnings;", selbst ohne wirkliche Fehler dürfte das schon ne ganze Menge werfen. Damit kannst du zunächst mal selber schauen und das wichtigste davon auch hier posten, um es möglichen Helfern einfacher zu machen.
Nun aber zu deinem Script, es gibt ein paar Dinge, die mir beim Überfliegen auffallen, ohne das Script selber zu testen:
Wieso wird einer Variablen in Z. 14/15 nach dem = plötzlich kein Wert mehr zugewiesen, und wieso werden Stattements da neuerdings nicht mehr mit ; abgeschlossen?
Wieso werden Strings in deinen Abfragen, die in Z. 25 respektive 87 beginnen, plötzlich nicht mehr in Gänsefüßchen gesetzt?
Grüße,
Nik
nur 1 tip:
das sollte reichen um die fehler zu finden.
mfg
perl -c script
das sollte reichen um die fehler zu finden.
mfg