Vinzenz Mai: Konditionaloperator

Beitrag lesen

Hallo,

(param('email') =~ m/^\w+@\w+.\w+$/)
      ? $update_data{'email'} = quote(param('email'))
      : $class{'email'} = 'invalid_value';

  
ich sehe Zuweisungen ohne Verwendung von Klammern.  
  
Die  Perldoc erzählt Dir im Abschnitt [Conditional Operator](http://perldoc.perl.org/perlop.html#Conditional-Operator-operator%2c-conditional-operator%2c-ternary-ternary-%3f%3a)  
  
"Because this operator produces an assignable result, using assignments without parentheses will get you in trouble."  
  
und erläutert dies an einem einfach zu verstehenden Beispiel.  
  

> Das komische ist, dass $update\_data{'email'} den Wert 'invalid\_value' bekommt, wenn die Adresse gültig ist (also der Regex matcht).  
>   
> Woran liegt das? Ich kann es mir einfach nicht erklären.  
  
Ich folgere daraus, dass Du das Handbuch nicht gelesen hast.  
  
  
Freundliche Grüße  
  
Vinzenz