pattern matching Befehl kürzer schreiben?

Von: , Frage gestellt am Fr, 14. Mär 2003

Hi, ich habe da bei meinem Erstellten Script einen Matching Befehl der funktioniert, aber ich glaube, daß er kürzer gehen müsste:

(($FORM{'alc'} =~ /Any|$alc/) && (($nowdt =~ /$dmonth/ && $nowdt =~ /$dyear/) || ($nowdt =~ /$ddmonth/ && $nowdt =~ /$ddyear/) || ($nowdt =~ /$dddmonth/ && $nowdt =~ /$dddyear/)))

Dieser Abschnitt:
(($nowdt =~ /$dmonth/ && $nowdt =~ /$dyear/) || ($nowdt =~ /$ddmonth/ && $nowdt =~ /$ddyear/) || ($nowdt =~ /$dddmonth/ && $nowdt =~ /$dddyear/))

müsste doch irgendwie zu kürzen gehen oder?

($nowdt =~ /$dmonth/ && /$dyear/) funktioniert aus irgend einem Grund nicht. Hat jemand eine Ahnung warum?

Danke

Martin

3 Antworten zu dieser Frage

  1. Antwort von nach 2 Tagen 0 hilfreich
    Re: pattern matching Befehl kürzer schreiben?

    Hi, Dieser Abschnitt:
    müsste doch irgendwie zu kürzen gehen oder?
    nein, wieso sollte er? ($nowdt =~ /$dmonth/ && /$dyear/) funktioniert aus irgend
    einem Grund nicht. Hat jemand eine Ahnung warum?
    Weil Du hiermit zwei UND-verknüpfte boole'sche Werte hast:

    a) "$nowdt =~ /$dmonth/" und
    b) "/$dyear/", welches identisch ist mit "$_ =~ /$dyear/".

    Ich nehme einfach mal an, dass in $_ der Wert von $dyear nicht vorkommt.

    Cheatah

    • Antwort von nach 3 Tagen 0 hilfreich
      Danke

      Hi,

      Danke für die Info!

      Bin ich doch nicht so dumm :-)

      Im Buch Perl in 21 Tagen wurde dauernd etwas gekürzt und dann komme ich mit so langen Patten Matching Befehlen daher.

      Danke für Deine Info. Jetzt ist mir einiges klarer!

      Martin

    • Antwort von nach 3 Tagen 0 hilfreich
      Re^2: pattern matching Befehl kürzer schreiben?

      Ich nehme einfach mal an, dass in $_ der Wert von $dyear nicht
      vorkommt.
      warum eigentlcih nicht?

      $_ = $nowdt;
      (($FORM{'alc'} =~ /Any|$alc/) && ( ( /$dmonth/ && /$dyear/ ) || ( /$ddmonth/ && /$ddyear/) || ( /$dddmonth/ &&  /$dddyear/) ) )
      

Keine passende Antwort gefunden? Jetzt eigene Frage stellen!