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

pktm
 2008-08-10 23:29
#113295 #113295
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Du hast innerhlab eines Codeblocks (alles das, was auf einer Ebene in einer Perl-Datei steht ist ein Codeblock für sich) mehrfach $sth deklaiert, und zwar in Zeile 43,070,56 111 usw.
Entweder, du benennst die Variablen jedesmal anders, z.B. $sth_insert_sth und $sth_select_x, oder du lagster Codestücke in Methoden aus.

Beispiel:

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
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# Verbindung zur Datenbank herstellen
my $dbh = DBI->connect(blabla,nimm,mal,dein,passwort,raus);

# Methoden aufrufen, die irgend etwas mit der Datenbank machen.
do_something($dbh);

# jetzt noch was mit Rückgabewert:
my $rv = do_something_else($dbh);
print $rv;

=head1 METHODS

Deine Methoden hier.


=head2 do_someting

Beschreibung, was du machst....

=cut

sub do_someting {
my $dbh = shift;

my $sth = $dbp->prepare(dein statement) or die "fehler...";
my $rv = $sth->...... usw.

} # /do_something



=head2 do_someting_else

Beschreibung, was du machst....

=cut

sub do_someting_else {
my $dbh = shift;

my $sth = $dbp->prepare(dein statement) or die "fehler...";
my $rv = $sth->...... usw.

return "ergebnis";
} # /do_something_else


Edit:
Btw, das Modul CPAN:SQL::Abstract bietet sich dir quasi an, und um die Zugangsdaten zu deiner Datenbank aus deinen Skripten heraus zu halten kannst du schön mit CPAN:Config::Auto arbeiten.

Hier noch ein schnelles Beispiel:
main.config
Code: (dl )
1
2
3
4
5
6
7
8
9
#!/perl/bin/perl

my %CONFIG = ();

$CONFIG{dsn} = 'dbi:Oracle:localhost';
$CONFIG{username} = 'testbenutzername';
$CONFIG{password} = 'testpasswort';

\%CONFIG;


dein Programm:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/usr/bin/perl

use strict;
use warnings;
use DBI;
use Config::Auto;

my $config = Config::Auto::parse('main.config');

my $dsn = $config->{dsn};
my $username = $config->{username};
my $password = $config->{password};
my $options = { AutoCommit => 1, };

my $dbh = DBI->connect($dsn, $username, $password, $options) or die "cannot connect to db: " . DBI::errstr();

# mach was mit $dbh

$dbh->disconnect();
http://www.intergastro-service.de (mein erstes CMS :) )

View full thread Fehler in meinem ersten Perl Script