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

Ein string auf ein Musterüberprüfen ! (page 4)



<< |< 1 2 3 4 5 6 >| >> 52 entries, 6 pages
renee
 2007-07-06 20:45
#78050 #78050
User since
2003-08-04
14371 articles
ModeratorIn
[Homepage] [default_avatar]
sorry, muss natürlich $array[2] heißen...
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/
sid burn
 2007-07-06 23:09
#78051 #78051
User since
2006-03-29
1520 articles
BenutzerIn

user image
Dann kann man aber auch gleich
Code (perl): (dl )
1
2
3
if ( $array[2] ) {
    # Mach was wenn $array[2] nicht leer ist...
}

schreiben.
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de
renee
 2007-07-06 23:29
#78052 #78052
User since
2003-08-04
14371 articles
ModeratorIn
[Homepage] [default_avatar]
Nein, wenn ne 0 drinsteht ist es false...
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/
renee
 2007-07-06 23:30
#78053 #78053
User since
2003-08-04
14371 articles
ModeratorIn
[Homepage] [default_avatar]
deswegen ist bei mir auch noch ein Fehler drin (danke @sid_burn)

Code (perl): (dl )
1
2
if( defined $array[2] and $array[2] ne '' ){
}
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/
sid burn
 2007-07-06 23:33
#78054 #78054
User since
2006-03-29
1520 articles
BenutzerIn

user image
[quote=renee,06.July.2007, 21:29]Nein, wenn ne 0 drinsteht ist es false...[/quote]
Code (perl): (dl )
1
2
3
if( $array[2] and $array[2] ne '' ){
            # mach was wenn $array[2] nicht leer ist...
}


Wenn da eine 0 drin steht, dann ist die erste Bedingung ebenso nicht erfüllt und das if Konstrukt wird nicht ausgeführt. Das du danach nochmal auf ne '' überprüfst bringt da auch nicht mehr viel. Wenn dann muss da ein "define" hin, wenn er nur bei einem Leerstring abbrechen soll, aber bei einer 0 weiter laufen soll.

Code (perl): (dl )
1
2
3
if( defined $array[2] and $array[2] ne '' ){
            # mach was wenn $array[2] ein Leerer String ist.
}


Ohne das define kann man das ganze wie ich oben schrieb, schreiben.
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de
renee
 2007-07-06 23:52
#78055 #78055
User since
2003-08-04
14371 articles
ModeratorIn
[Homepage] [default_avatar]
[quote=sid burn,06.07.2007, 21:33]Wenn da eine 0 drin steht, dann ist die erste Bedingung ebenso nicht erfüllt und das if Konstrukt wird nicht ausgeführt. Das du danach nochmal auf ne '' überprüfst bringt da auch nicht mehr viel. Wenn dann muss da ein "define" hin, wenn er nur bei einem Leerstring abbrechen soll, aber bei einer 0 weiter laufen soll.[/quote]
Deswegen habe ich im darauffolgenden Post angemerkt, dass bei mir auch noch ein Bug drin ist...
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/
PerlProfi
 2007-07-07 00:47
#78056 #78056
User since
2006-11-29
340 articles
BenutzerIn
[default_avatar]
Da würde ich eher mit length() prüfen:
Code: (dl )
1
2
3
if ( length($array[2]) ) {
# mach was wenn $array[2] nicht leer ist...
}

edit: Tut mir Leid, hatte das mit dem undef übersehen, so kriegt man natürlich auch ne Warnung...

MfG\n\n

<!--EDIT|PerlProfi|1183755016-->
sid burn
 2007-07-07 01:15
#78057 #78057
User since
2006-03-29
1520 articles
BenutzerIn

user image
[quote=renee,06.July.2007, 21:52][quote=sid burn,06.07.2007, 21:33]Wenn da eine 0 drin steht, dann ist die erste Bedingung ebenso nicht erfüllt und das if Konstrukt wird nicht ausgeführt. Das du danach nochmal auf ne '' überprüfst bringt da auch nicht mehr viel. Wenn dann muss da ein "define" hin, wenn er nur bei einem Leerstring abbrechen soll, aber bei einer 0 weiter laufen soll.[/quote]
Deswegen habe ich im darauffolgenden Post angemerkt, dass bei mir auch noch ein Bug drin ist...[/quote]
Ja, wo ich das geschrieben hatte, war dein Post noch nicht da. ^^
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de
mr-sansibar
 2007-07-08 16:53
#78058 #78058
User since
2006-04-13
90 articles
BenutzerIn
[default_avatar]
was ist jetzt besser, ihr seit die profis !!!

Code: (dl )
1
2
3
if ( length($array[2]) ) {
# mach was wenn $array[2] nicht leer ist...
}


Code: (dl )
1
2
3
if( $array[2] and $array[2] ne '' ){
# mach was wenn $array[2] nicht leer ist...
}



Code: (dl )
1
2
3
if( defined $array[2] and $array[2] ne '' ){
# mach was wenn $array[2] ein Leerer String ist.
}


und was meint ihr mit define ???
renee
 2007-07-08 17:42
#78059 #78059
User since
2003-08-04
14371 articles
ModeratorIn
[Homepage] [default_avatar]
Am lesbarsten in Version 1. Ein am "besten" gibt es in Perl oftmals nicht...

Das mit dem defined ist wichtig, wenn man auch "false"-Werte zulassen will (z.B. 0,'',...)

Vergleiche:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
#!/usr/bin/perl

for( 0, '', undef, 1 ){
    if( $_ ){
        print "ohne defined: ;;$_;;";
    }
    if( defined $_ ){
        print "mit defined: ;;$_;;";
    }
}
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/
<< |< 1 2 3 4 5 6 >| >> 52 entries, 6 pages



View all threads created 2007-06-29 17:48.