Thread Fehler in meinem ersten Perl Script (15 answers)
Opened by Kingpin90 at 2008-08-10 21:49

Kingpin90
 2008-08-10 23:11
#113294 #113294
User since
2008-08-10
7 Artikel
BenutzerIn
[default_avatar]
Hallo,

danke für deine schnelle Antwort.
Mein Script sieht inzischen so aus:

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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
#! /usr/bin/perl

use strict;
use warnings;
use DBI;

my $user = perl;
my $pass = perl;
my $db = klicktel;
my $host = localhost;
my $driver = "DBI:mysql:$db:$host";
my $dbh = DBI->connect($driver,$user,$pass) or die $DBI::errstr;

my $quelle = "perl";
my $ziel = "perl";

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";
}


Die Fehlermeldungen sind erheblich weniger geworden.
Nun tauchen immer noch folgende Meldungen auf:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
root@ks359263:/daten# clear
root@ks359263:/daten# perl cmag_mysql.pl
"my" variable $sth masks earlier declaration in same scope at cmag_mysql.pl line 56.
"my" variable $quelldaten masks earlier declaration in same scope at cmag_mysql.pl line 68.
"my" variable $sth masks earlier declaration in same scope at cmag_mysql.pl line 70.
Global symbol "$guelldaten" requires explicit package name at cmag_mysql.pl line 56.
Global symbol "$gesamt" requires explicit package name at cmag_mysql.pl line 58.
Global symbol "$guelldaten" requires explicit package name at cmag_mysql.pl line 70.
Global symbol "$zeiger" requires explicit package name at cmag_mysql.pl line 72.
Global symbol "$felder" requires explicit package name at cmag_mysql.pl line 83.
Global symbol "$zeiger" requires explicit package name at cmag_mysql.pl line 83.
Global symbol "@ergebnis" requires explicit package name at cmag_mysql.pl line 85.
Global symbol "$felder" requires explicit package name at cmag_mysql.pl line 85.
Global symbol "@ergebnis" requires explicit package name at cmag_mysql.pl line 87.
Global symbol "@ergebnis" requires explicit package name at cmag_mysql.pl line 87.
Global symbol "@ergebnis" requires explicit package name at cmag_mysql.pl line 87.
Global symbol "$gesamt" requires explicit package name at cmag_mysql.pl line 116.
Bareword "perl" not allowed while "strict subs" in use at cmag_mysql.pl line 7.
Bareword "perl" not allowed while "strict subs" in use at cmag_mysql.pl line 8.
Bareword "klicktel" not allowed while "strict subs" in use at cmag_mysql.pl line 9.
Bareword "localhost" not allowed while "strict subs" in use at cmag_mysql.pl line 10.
Execution of cmag_mysql.pl aborted due to compilation errors.
root@ks359263:/daten#

View full thread Fehler in meinem ersten Perl Script