Schrift
[thread]193[/thread]

Use of uninitialized value: Wie initialisiere ich ein Hash richtig?

Leser: 2


<< |< 1 2 >| >> 15 Einträge, 2 Seiten
x-man
 2004-03-04 17:18
#1524 #1524
User since
2003-09-11
67 Artikel
BenutzerIn
[default_avatar]
Moin!

Mein Script läuft aber mich stört die Fehlermeldung in der error.log Datei meines Servers:

Use of uninitialized value in hash element at C:\.....

Wie kann ich einen Hash richtig initialisieren, damit die Medung verschwindet? Momentan sieht es bei mir so aus:

Code: (dl )
1
2
my %hash;
$hash{$key} = $value; #Fehlermeldung weist auf diese Zeile
\n\n

<!--EDIT|x-man|1078414414-->
Heromaster
 2004-03-04 17:19
#1525 #1525
User since
2003-08-05
220 Artikel
BenutzerIn
[default_avatar]
Code: (dl )
my %hash;
oder
Code: (dl )
my %hash = {};
Derjenige, der zwei Hasen jagt, lässt einen zurück und verliert den anderen.
Crian
 2004-03-04 17:23
#1526 #1526
User since
2003-08-04
5872 Artikel
ModeratorIn
[Homepage]
user image
Ähm? Das steht da schon...

Eigentlich kann das mit der Fehlermeldung so nicht sein?!

Edit: bzw. daran liegen, dass der Wert von $value undefiniert ist.\n\n

<!--EDIT|Crian|1078414274-->
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
Maluku
 2004-03-04 17:25
#1527 #1527
User since
2003-10-02
27 Artikel
BenutzerIn
[Homepage] [default_avatar]
"Use of uninitialized value in hash element" hat nichts mit dem Hash zu tun....
Eher ist , glaube ich, $key oder $hash{$key} = undef ist\n\n

<!--EDIT|Maluku|1078413967-->
Code (perl): ()
1
2
3
4
5
&#36_='';
s%%`^.*`s;.*;uhtnmo;;a>lha~a>inu~a>fmk~a>rou~a>duM~a>btl~s;&&&&&&;!d1!l2!b3!i4!f5!r6q(?);e;Z`
`}a>&&&`sub# "1#{#"_=shift#;s^"2^"3#^;``;~`return #"_#}``^!&&`"1(#""2)#\.`Z%;
s~Z~print~g;s/#/\\/g;s/`(.)(.+?)`(.+?)`/s&#36{1}&#36{2}&#36{1}&#36{3}&#36{1}g\;/g;s;&;(.);g;y^"^&#36^;
print;
pq
 2004-03-04 17:34
#1528 #1528
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=x-man,04.03.2004, 16:18]
Code: (dl )
1
2
my %hash;
$hash{$key} = $value; #Fehlermeldung weist auf diese Zeile
[/quote]
dann muss $key oder $value undef sein
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
x-man
 2004-03-04 17:35
#1529 #1529
User since
2003-09-11
67 Artikel
BenutzerIn
[default_avatar]
Vielen Dank für die hyperschnellen Antworten! Ich werde das Script genauer unter die Lupe nehmen. Mal sehn, on die Meldung auch verschwindet.
Crian
 2004-03-04 17:35
#1530 #1530
User since
2003-08-04
5872 Artikel
ModeratorIn
[Homepage]
user image
"uninitialized value" klingt mehr nach Wert als nach Schlüssel ;)
Außerdem würde er hoffentlich mit einem Fehler anhalten, wenn der Schlüssel undef wäre
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
pq
 2004-03-04 17:36
#1531 #1531
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=Heromaster,04.03.2004, 16:19]
Code: (dl )
my %hash;
oder
Code: (dl )
my %hash = {};
[/quote]
my %hash;
ist erstens vollkommen ausreichend und zweitens ist
my %hash = {}; unsinn, da es einen hash
kreiert, dessen key soetwas wie 'HASH(...)' ist und dessen
value dazu undef ist.
(ich nehme mal an, du hast dich nur vertippt und meintest
normale klammern, aber die sind, wie gesagt, unnötig)
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
pq
 2004-03-04 17:39
#1532 #1532
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=Crian,04.03.2004, 16:35]"uninitialized value" klingt mehr nach Wert als nach Schlüssel ;)[/quote]
nein, mit 'value' ist nicht gemeint, ob key oder value, sondern
allgemein der wert einer variablen o.ä.
Quote
Außerdem würde er hoffentlich mit einem Fehler anhalten, wenn der Schlüssel undef wäre

wieso? keys werden stringified, und undef wird so zu '', das
ist ganz legal
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
Crian
 2004-03-04 17:42
#1533 #1533
User since
2003-08-04
5872 Artikel
ModeratorIn
[Homepage]
user image
[quote=pq,04.03.2004, 16:39][quote=Crian,04.03.2004, 16:35]"uninitialized value" klingt mehr nach Wert als nach Schlüssel ;)[/quote]
nein, mit 'value' ist nicht gemeint, ob key oder value, sondern
allgemein der wert einer variablen o.ä.
Quote
Außerdem würde er hoffentlich mit einem Fehler anhalten, wenn der Schlüssel undef wäre

wieso? keys werden stringified, und undef wird so zu '', das
ist ganz legal[/quote]
Stimmt, Du hast natürlich Recht.

my %hash = (); schreib ich aber trotzdem ab und zu gern hin. Es ist zwar für den Interpreter wurscht, aber wenn es in einer Reihe von Variablen auftaucht, die alle gerade initialisiert werden, ist es optisch schöner.
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
<< |< 1 2 >| >> 15 Einträge, 2 Seiten



View all threads created 2004-03-04 17:18.