Schrift
[thread]8063[/thread]

warnings (Seite 5)

Leser: 1


<< |< 1 2 3 4 5 6 >| >> 52 Einträge, 6 Seiten
renee
 2006-06-09 16:50
#67090 #67090
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Man sollte keine Warnungen ignorieren, weil sie immer Hinweise auf mögliche Bugs sind. Ich mache es häufig so, dass ich die Variablen mit default-Werten belege. Ich mache das so wie esskar geschrieben hatte:
Code: (dl )
my $cookie = $cgi->cookie() or '';
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/
GwenDragon
 2006-06-09 16:51
#67091 #67091
User since
2005-01-17
14848 Artikel
Admin1
[Homepage]
user image
Programmplanung ist eben auch wichtig.
Dazu gehört, zu definieren, welche Werte bestimmte eingelesene Daten haben dürfen.

Wenn du das nicht tust, kannst du irgendwann üble Überraschungen oder nur lustige Effekte (je nach Schwere des Problems) haben.

--
Wenn ein Programm auf Anhieb läuft, hat es ganz sicher einen verstecken bösen Fehler.
ist glaube ich von Nickolaus Wirth, Erfinder von Pascal, Modula, Autor diversaer Compilerbau- und Programmieralgorithmenbücher.\n\n

<!--EDIT|GwenDragon|1149857835-->
Froschpopo
 2006-06-09 16:57
#67092 #67092
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
aber ich will ja, dass meine variable einen undef wert hat weil ich ihr den wert später in einer schleife zuweisen will.
wie würdest du folgendes machen.

Code: (dl )
1
2
3
4
5
my $var;
for (..) {
$var = $_;
}
print $var;

das einzige was ich machen könnte, is $var von beginn an schon auf 0 oder so zu setzen.
GwenDragon
 2006-06-09 17:03
#67093 #67093
User since
2005-01-17
14848 Artikel
Admin1
[Homepage]
user image
[quote=Froschpopo,09.06.2006, 14:57]aber ich will ja, dass meine variable einen undef wert hat weil ich ihr den wert später in einer schleife zuweisen will.
wie würdest du folgendes machen.

Code: (dl )
1
2
3
4
5
my $var;
for (..) {
  $var = $_;
}
print $var;

das einzige was ich machen könnte, is $var von beginn an schon auf 0 oder so zu setzen.[/quote]
Geht doch ohne warnings.
Code: (dl )
1
2
3
4
5
6
7
use strict;
use warnings;
my $var;
for (1..10) {
 $var = $_;
}
print $var;

$var hat damit den Wert 10 am Schluß.\n\n

<!--EDIT|GwenDragon|1149858298-->
Froschpopo
 2006-06-09 17:12
#67094 #67094
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
Code: (dl )
1
2
3
4
5
6
7
use strict;
use warnings;
my $var = $cgi->cookie('keks');
for (1..10) {
$var = $_ if $_ eq $var;
}
print $var;

dann wieder nicht.
Ok, ich weiss aber mittlerweile warum und wie man das beheben kann.

Gibt es eine gute und möglichst kurze schreibweise um das defined und den (beispiel) vergleichsoperatoren in einer anweisung unter einen hut zu bekommen, oder ist if (defined($var) and $var eq 'etwas') schon das kürzeste?
vielleicht gibts ja da sone zusammenfassung oder sowas
GwenDragon
 2006-06-09 17:30
#67095 #67095
User since
2005-01-17
14848 Artikel
Admin1
[Homepage]
user image
Code: (dl )
if ( defined $var && $var eq 'etwas') {
Froschpopo
 2006-06-09 19:38
#67096 #67096
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
das wäre aber nu rkorrekt, wenn perl sofort die anweisungsblock abbrechen würde, wenn die erste prüfung undef ergibt.

soll heißen:

if ( $var eq 'etwas' && defined $var) {

wäre falsch!

oder?
GwenDragon
 2006-06-09 19:42
#67097 #67097
User since
2005-01-17
14848 Artikel
Admin1
[Homepage]
user image
Code: (dl )
if ( $var eq 'etwas' && defined $var) {

Ja, falsch. Weil in $var ja undef ist. Dann gibt es eine Warnung.

Wozu das?
Um Laufzeit zu sparen?\n\n

<!--EDIT|GwenDragon|1149867826-->
Froschpopo
 2006-06-09 19:47
#67098 #67098
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
nein, um zu verstehen wie perl arbeitet bzw wann es aufhört eine anweisung einzulesen.
nämlich, wie ich ja jetzt gelernt hab: schon beim ersten UNWAHR in einer IF... alles was noch im anweisungskopf folgt ist dann unwichtig und kann falsch sein.
GwenDragon
 2006-06-09 19:53
#67099 #67099
User since
2005-01-17
14848 Artikel
Admin1
[Homepage]
user image
Das gilt aber nur bei einer UND-Verknüpfung!

Allgemein gilt: Nicht beim ersten unwahr, sondern, wenn der Ausdruck unwahr ergibt.\n\n

<!--EDIT|GwenDragon|1149868443-->
<< |< 1 2 3 4 5 6 >| >> 52 Einträge, 6 Seiten



View all threads created 2006-06-08 02:06.