Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]8639[/thread]

Fehlerabfangen bei $varable ist undef (Seite 2)

Leser: 1


<< |< 1 2 >| >> 15 Einträge, 2 Seiten
pq
 2007-01-16 14:23
#73158 #73158
User since
2003-08-04
12209 Artikel
Admin1
[Homepage]
user image
[quote=opi,16.01.2007, 11:03]Nun, $string ist nicht wirklich leer und auf jeden Fall defined, wenn du über
<STDIN> einliest, deshalb würde sich

Code: (dl )
1
2
3
my $string = <STDIN>;
chomp($string);
$string = 'default' if $string eq '';


anbieten. Oder wie pq schon schrieb, mit //=.[/quote]
das eine hat mit dem anderen aber nichts zu tun. wenn die variable
undef ist, kann man mit //= arbeiten bzw. defined(). wenn es
um einen string mit der länge 0 geht, dann prüft man auf length()
oder vergleicht mit ''.
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
PerlProfi
 2007-01-16 18:07
#73159 #73159
User since
2006-11-29
340 Artikel
BenutzerIn
[default_avatar]
Wo liegt denn der Unterschied zwischen ||= und //=?

MfG PerlProfi
renee
 2007-01-16 18:38
#73160 #73160
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
||= geht nicht nach undef, sondern auf "unwahr"

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
24
25
26
27
my $var = 0;
$var ||= 'test';
print $var,"\n";
# test

$var = undef;
$var ||= 'test';
print $var,"\n";
# test

$var = '';
$var ||= 'test';
print $var,"\n";
# test

# ab Perl5.10
$var = 0;
$var //= 'test';
# 0

$var = undef;
$var //= 'test';
# test

$var = '';
$var //= 'test';
# ''
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/
bloonix
 2007-01-16 19:18
#73161 #73161
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
[quote=pq,16.01.2007, 13:23]wenn die variable undef ist, kann man mit //= arbeiten bzw. defined(). wenn es um einen string mit der länge 0 geht, dann prüft man auf length()
oder vergleicht mit ''.[/quote]
Sodele, dann ist //= in diesem Fall nicht zu gebrauchen, wenn vorher
ein $string = <STDIN>; ausgeführt wurde, da $string auf jeden Fall
defined sein wird.\n\n

<!--EDIT|opi|1168968025-->
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.
pq
 2007-01-16 21:04
#73162 #73162
User since
2003-08-04
12209 Artikel
Admin1
[Homepage]
user image
[quote=opi,16.01.2007, 18:18]wenn vorher
ein $string = <STDIN>; ausgeführt wurde, da $string auf jeden Fall
defined sein wird.[/quote]
ausser STDIN ist zu ende ausgelesen. kabazza sagt explizit, die
variablen seien undef, wie auch immer das zustande kommt.
also entweder verwechselt kabazza undef mit dem leerstring oder
die datei wird auf komische art und weise eingelesen, oder vielleicht
wird ja auch noch gesplittet oder so. und kabazza sagte, dass esskars
vorschlag funktioniert.
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
<< |< 1 2 >| >> 15 Einträge, 2 Seiten



View all threads created 2007-01-12 13:35.