Schrift
[thread]8710[/thread]

Fehlermeldung bei printf

Leser: 1


<< >> 6 Einträge, 1 Seite
Duff
 2007-02-01 13:21
#73922 #73922
User since
2006-10-06
283 Artikel
BenutzerIn

user image
Hallo,

bekomme bei folgendem code
Code: (dl )
1
2
3
        foreach my $array (@{$arrayRef}) {
printf "%-90s : %-s\n", $array->[5], ${$array}[9];
}


ab und zu diese Fehlermeldung hier:
Code: (dl )
Use of uninitialized value in printf 


Kann ich das irgendwie abstellen?
D'OH
Daniel
MisterL
 2007-02-01 13:56
#73923 #73923
User since
2006-07-05
334 Artikel
BenutzerIn
[default_avatar]
Fehlt da nicht noch ein wenig Code zum Erkennen des Kontextes ?
“Perl is the only language that looks the same before and after RSA encryption.”
Duff
 2007-02-01 14:04
#73924 #73924
User since
2006-10-06
283 Artikel
BenutzerIn

user image
Also die Funktion sieht so aus:
Code: (dl )
1
2
3
4
5
6
7
8
9
sub function {
my ($arrayRef)=@_;
printf ("%-90s | %-s \n", 'TEXT','TEXT');
printf("%-s\n",'-'x(23+length($arrayRef->[1]->[9]))); # die Laenge des Wertes im Array herausfinden
foreach my $array (@{$arrayRef}) {
printf "%-90s : %-s\n", $array->[5], ${$array}[9];
}
print "\nAnzahl: ", scalar(@{$arrayRef}), "\n\n";
}
D'OH
Daniel
Ronnie
 2007-02-01 14:07
#73925 #73925
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
Wieso versuchst du auf zwei Arten zu dereferenzieren?
Code: (dl )
printf "%-90s : %-s\n", $array->[5], ${$array}[9];

Wie wäre es mit:
Code: (dl )
printf "%-90s : %-s\n", $array->[5], $array->[9];

EDIT: Im Zweifelsfall zeig mal wie der inhalt von $array ussieht, mit CPAN:Data::Dumper.\n\n

<!--EDIT|Ronnie|1170331711-->
bloonix
 2007-02-01 15:00
#73926 #73926
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
[quote=Duff,01.02.2007, 12:21]
Code: (dl )
Use of uninitialized value in printf


Kann ich das irgendwie abstellen?[/quote]
Ja, entweder mit

no warnings 'uninitialized';

aber das wäre nicht schön ... besser wäre du prüfst vorher jede Variable
auf defined() und setzt einen Defaultwert, falls die Variable undefiniert ist.

$var = '<DEFAULT WERT>' unless defined $var;\n\n

<!--EDIT|opi|1170337626-->
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
Duff
 2007-02-01 15:42
#73927 #73927
User since
2006-10-06
283 Artikel
BenutzerIn

user image
Ja danke.

Habe den Fehler aber glaube ich gefunden.
In der Zeile
Code: (dl )
printf("%-s\n",'-'x(23+length($arrayRef->[1]->[9])));           # die Laenge des Wertes im Array herausfinden

greife ich ja auf das 2te Element und nicht auf das 1te Element.
Habe dies dann so korrigiert:
Code: (dl )
printf("%-s\n",'-'x(23+length($arrayRef->[0]->[9])));           # die Laenge des Wertes im Array herausfinden


Des Weiteren rufe ich die Funktion nur auf, wenn folgende Prüfung wahr ist:
Code: (dl )
function($arrayRef) if($#{$arrayRef} >= 0)
D'OH
Daniel
<< >> 6 Einträge, 1 Seite



View all threads created 2007-02-01 13:21.