Thread ungelöste Meldung durch use diagnostics (30 answers)
Opened by Auctioneer at 2013-01-03 21:49

Auctioneer
 2013-01-03 21:49
#164619 #164619
User since
2008-09-30
26 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hallo, alles Gute im Neuen Jahr!

Nach erfolgreicher Behebung der mit 'use diagnostics;' festgestellten Ungereimtheiten in einem Auktionsscript ist einer übriggeblieben. Vielleicht weiss jemand von Euch, wie ich diesen noch weg bringe.

Es handelt sich um eine 'sub get_form_data' auch 'sub pasre_form_data' und ähnlich genannte Routine. Ich weiss, was sie macht, ich lasse mich daher nicht zu 'Erklärungen' hinreissen, die die Gurus unter Euch nur zum Lachen bringen würden. Dieses Ding wurde, mit kleinen Anpassungen, in ungezählten alten Perl-Scripts verwendet. Ich benutze im Uebrigen eine, die von einem versierten 'Einbrecher' erstellt wurde, ein vielfaches grösser ist und bislang alle Angriffsversuche erfolgreich überstanden hat. Trotzdem, auch diese Routine weist den genau gleichen 'Fehler' auf wie das Original, das ich nachstehend abdrucke.

Ich wäre froh, wenn jemand antworten könnte, wie ich das 'read' irgendwie initialisieren kann. Mit 'my' wird ja sowas nicht möglich sein.

Oder wäre es mit einer Ergänzung dieser Linie möglich ?

Code: (dl )
use vars qw(%config %category %form);


Besten Dank zum Voraus

Ernie


--
Code: (dl )
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); ## Linie 1186

--
Use of uninitialized value in read at auct.pl line 1186 (#1)
(W uninitialized) An undefined value was used as if it were already
defined. It was interpreted as a "" or a 0, but maybe it was a mistake.
To suppress this warning assign a defined value to your variables.

To help you figure out what was undefined, perl will try to tell you the
name of the variable (if any) that was undefined. In some cases it cannot
do this, so it also tells you what operation you used the undefined value
in. Note, however, that perl optimizes your program and the operation
displayed in the warning may not necessarily appear literally in your
program. For example, "that $foo" is usually optimized into "that "
. $foo, and the warning will refer to the concatenation (.) operator,
even though there is no . in your program.
--
[Thu Jan 3 21:20:33 2013] auct.pl: Use of uninitialized value in read at auct.pl line 1186.
--

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
#-#############################################
# Sub: Get Form Data
# This gets data from a post.

sub get_form_data {
my $temp;
my $buffer;
my @data;
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
foreach $temp (split(/&|=/,$buffer)) {
$temp =~ tr/+/ /;
$temp =~ s/%([0-9a-fA-F]{2})/pack("c",hex($1))/ge;
$temp =~ s/[\r\n]/ /g;
push @data, $temp;
}
foreach $temp (split(/&|=/,$ENV{'QUERY_STRING'})) {
$temp =~ tr/+/ /;
$temp =~ s/%([0-9a-fA-F]{2})/pack("c",hex($1))/ge;
$temp =~ s/[\r\n]/ /g;
push @data, $temp;
}
return @data;
}
Never judge another men before you walk a mile in his shoes

View full thread ungelöste Meldung durch use diagnostics