Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]9042[/thread]

Fehlermeldungen abfangen/unterdrücken: Use of uninitialized value in concatenat

Leser: 2


<< |< 1 2 >| >> 18 Einträge, 2 Seiten
Duff
 2007-05-27 19:16
#76994 #76994
User since
2006-10-06
283 Artikel
BenutzerIn

user image
Hallo,

ich habe Probleme damit, folgende Fehlermeldung bei falscher Eingabe zu vermeiden:
Code: (dl )
1
2
Use of uninitialized value in concatenation (.) or string at /home/daniel/scripts/select_db.pl line 32, <STDIN> line 1.
Use of uninitialized value in hash element at /home/daniel/scripts/select_db.pl line 33, <STDIN> line 1.


Die bemängelten Zeilen im Skript sehen so aus:
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
 23 # Funktion zum Ueberpruefen, ob die gewuenschte DB auch konfiguriert ist
24 #
25 sub check {
26 $input=shift;
27 if($input eq '') {
28 print "Es wurde keine DB zum Connecten angegeben!\n";
29 exit 1;
30 } else {
31 my ($match) = $input =~ /\.(.+?)\./ if defined $input;
32 $host="www.$match.de";
33 if ($hash{$match}) {
34 connect_to_db($host,$hash{$match}[0], $hash{$match}[1], $hash{$match}[0]);
35 }
36 }
37 }
38
39 # Funktion zur Herstellung der DB-Verbindung
40 #
41 sub connect_to_db {
42 $host=shift;
43 $user=shift;
44 $passwd=shift;
45 $db=shift;
46 system("/usr/bin/mysql --host=$host --user=$user --password=$passwd --protocol=TCP --database=$db;");
47 }


Hoffe, dass das an Informationen reicht...
D'OH
Daniel
MisterL
 2007-05-27 19:20
#76995 #76995
User since
2006-07-05
334 Artikel
BenutzerIn
[default_avatar]
Das gepostete Codestück wird wohl nicht reichen.
Rein tendenziell wird aber die Variablendeklaration mit "my" vermisst:
Code: (dl )
1
2
my $hash;
my $host;


Gruss MisterL
“Perl is the only language that looks the same before and after RSA encryption.”
Ronnie
 2007-05-27 19:40
#76996 #76996
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
$match ist undef, wenn $input nicht definiert ist. Evtl. solltest du ein elsif (defined $input) statt des else verwenden?! Die Verwendung von my zur Deklaration der Variablen ist wie von MisterL aufgeführt sinnvoll.
Duff
 2007-05-28 12:53
#76997 #76997
User since
2006-10-06
283 Artikel
BenutzerIn

user image
Sorry, aber die Variablen deklariere ich natürlich schon zu Beginn des Skriptes.

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
  1 #!/usr/bin/perl -w
2
3 use strict;
4
5 my $input;
6 my ($host, $user, $passwd, $db);
7
8 # Array mit den Daten fuer den Hash
9 # (user password)
10 #
11 my @array1=qw(user passwort);
12 my @array2=qw(user passwort);
13
14 my $arrayref1=\@array1;
15 my $arrayref2=\@array2;
16
17 # Hash mit den konfigurierten DB-Daten
18 #
19 my %hash=("domain" => $arrayref1,
20 "domain" => $arrayref2
21 );
22
D'OH
Daniel
Duff
 2007-05-28 14:28
#76998 #76998
User since
2006-10-06
283 Artikel
BenutzerIn

user image
Hier nochmal die genaue Fehlermeldung:
Code: (dl )
1
2
Use of uninitialized value in concatenation (.) or string at /home/daniel/scripts/select_db.pl line 32, <STDIN> line 1.
Use of uninitialized value in hash element at /home/daniel/scripts/select_db.pl line 33, <STDIN> line 1.


Es liegt wohl nicht an der Variablen $input, sondern $match.
D'OH
Daniel
Ronnie
 2007-05-28 14:38
#76999 #76999
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
Füge doch einfach mal ein warn $input; warn $match; ein, dann wissen wir mehr!
Duff
 2007-05-28 14:43
#77000 #77000
User since
2006-10-06
283 Artikel
BenutzerIn

user image
Bekomme dann folgende Fehlermeldung:
Code: (dl )
1
2
3
4
5
ll at /home/daniel/scripts/select_db.pl line 32, <STDIN> line 1.
Use of uninitialized value in warn at /home/daniel/scripts/select_db.pl line 32, <STDIN> line 1.
Warning: something's wrong at /home/daniel/scripts/select_db.pl line 32, <STDIN> line 1.
Use of uninitialized value in concatenation (.) or string at /home/daniel/scripts/select_db.pl line 33, <STDIN> line 1.
Use of uninitialized value in hash element at /home/daniel/scripts/select_db.pl line 34, <STDIN> line 1.


Habe die warnings wie folgt eingebaut (hoffe dass war so richtig):
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 23 # Funktion zum Ueberpruefen, ob die gewuenschte DB auch konfiguriert ist
24 #
25 sub check {
26 $input=shift;
27 if($input eq '') {
28 print "Es wurde keine DB zum Connecten angegeben!\n";
29 exit 1;
30 } else {
31 my ($match) = $input =~ /\.(.+?)\./ if defined $input;
32 warn $input; warn $match;
33 $host="www.$match.de";
34 if ($hash{$match}) {
35 connect_to_db($host,$hash{$match}[0], $hash{$match}[1], $hash{$match}[0]);
36 }
37 }
38 }
D'OH
Daniel
renee
 2007-05-29 00:41
#77001 #77001
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Was steht denn in $input?

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 23 # Funktion zum Ueberpruefen, ob die gewuenschte DB auch konfiguriert ist
24 #
25 sub check {
26 $input=shift;
27 if($input eq '') {
28 print "Es wurde keine DB zum Connecten angegeben!\n";
29 exit 1;
30 } else {
31 my ($match) = $input =~ /\.(.+?)\./ if defined $input;
32 if(defined $match){
33 $host="www.$match.de";
34 if ($hash{$match}) {
35 ...
36 }
37 }
38 else{
39 warn "\$match ist undef beim Input $input\n";
40 }
41 }
42 }
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Sucher
 2007-05-29 01:48
#77002 #77002
User since
2007-03-26
47 Artikel
BenutzerIn
[default_avatar]
Na, 11

Grüße,
Sucher
 2007-05-29 01:50
#77003 #77003
User since
2007-03-26
47 Artikel
BenutzerIn
[default_avatar]
Entschuldigung, sieht doch mehr wie 'll' aus.

Grüße,
<< |< 1 2 >| >> 18 Einträge, 2 Seiten



View all threads created 2007-05-27 19:16.