Schrift
[thread]380[/thread]

Zeile erzeugt Eintrag im Error-Log: funktioniert aber dennoch.



<< |< 1 2 >| >> 12 Einträge, 2 Seiten
oruebe
 2004-12-15 14:01
#3737 #3737
User since
2004-07-09
46 Artikel
BenutzerIn
[default_avatar]
Hallo,

folgendes Problem. In einer Schleife wir eine Variable ($htmlloggedin) unter einer bestimmten Voraussetzung immer erweitert, indem bei jedem Durchlauf der Schleife etwas an den den ursprünglichen Wert angehängt wird.
Ich mache das so:

$htmlloggedout1 = $htmlloggedout1.$ZEILE;

Das funzt auch, allerdings erzeugt diese Zeile einen Eintrag im Error-Log, der wie folgt aussieht:
"Use of uninitialized value in concatenation (.) or string at include.pl line 48., "


Was mache ich falsch, bzw. wiemache ich es "besser"?

Danke euch!!
Taulmarill
 2004-12-15 14:16
#3738 #3738
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
die fehlermeldung weisst darauf hin, dass die variable $ZEILE undef ist, also noch keinen wert zugewiesen bekommen hat. versuche folgendes:
Code: (dl )
$htmlloggedout1 .= $ZEILE if $ZEILE;
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
oruebe
 2004-12-15 14:22
#3739 #3739
User since
2004-07-09
46 Artikel
BenutzerIn
[default_avatar]
Ähhhmmm, diese Zeile wird nur ausgeführt, wenn $Zeile einen Wert hat. $Zeile "ist" also (sein oder nicht sein).

Dann entsteht dieser Eintrag doch wohl eher dadurch, dass beim ersten Durchlauf der Schleife die Variable $htmlloogedout1 noch keinen Wert hat, oder? Denn aus dem bisherigen Inhalt der Variable $htmll... (bei dem ersten Durchlauf noch leer) entsteht ja der neue Inhalt der selben Variable. Verstehe ich das richtig?
format_c
 2004-12-15 14:24
#3740 #3740
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Du solltest deine Variablen beim definieren immer einen Default Wert mitgeben:
my $ZEILE = $irgendwas || '';# Wenn $irgendwas false, dann leerer String

Das kannst du auch noch im nachhinein elegant machen mit einem trinären Operator:
$ZEILE ||= '';# $ZEILE false dann leerer String

Gruß Alex
renee
 2004-12-15 14:26
#3741 #3741
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Dann mach beim Deklarieren von $htmlloggedout1 das hier:
Code: (dl )
my $htmlloggedout1 = '';


Du könntest auch ruhig etwas Code posten, denn anhand _einer_ Zeile Code lässt sich nur selten der Fehler finden...
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/
oruebe
 2004-12-15 14:31
#3742 #3742
User since
2004-07-09
46 Artikel
BenutzerIn
[default_avatar]
@ Renee: Das mache ich nächstes mal. Ich dachte, dass der Fehler nur in dieser Zeile liegen kann.

Aber jetzt, wo mir klar ist, was der Error-Log-Eintrag bedeutet, ist das Problem wohl gelöst. Ich probiere es aus und wenn dieser Eintrag weiterhin besteht, werde ich mehr posten :-)

Danke mal wieder!!!
Taulmarill
 2004-12-15 15:01
#3743 #3743
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
wenn du den operator .= verwendest. wird übrigens auch keine warnungsmeldung erzeugt. auch nicht wenn $htmlloggedout1 undef ist.
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
format_c
 2004-12-15 17:25
#3744 #3744
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
@Taulmarill: Wobei wir nicht vergessen sollten, dass es zum guten Programmierstil gehört, Variablen immer einen definierten Zustand zu geben.

Gruß Alex
Taulmarill
 2004-12-15 17:41
#3745 #3745
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
@format_c: nunja, da würde ich dir nur bedingt recht geben. vor allen dingen bei Perl kann es durchaus methode haben, eine variable nicht zu definieren. sonst gäb's die undef funktion nicht :)
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
format_c
 2004-12-15 17:53
#3746 #3746
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Da hast du wohl Recht. Aber darauf bin ich bewusst nicht eingegangen. Darauf kommen die Leute aber selbst wenn sie genügend Erfahrung haben. "Änfängern" hoffentlich trete ich jetzt niemanden auf den Schlips, hilft diese Regel viele Fehler zu vermeiden.

Gruß Alex
<< |< 1 2 >| >> 12 Einträge, 2 Seiten



View all threads created 2004-12-15 14:01.