m0b: Logischer Operator und in Perl

Ich habe folgende Zeile in meinen Script eingebaut:

unless ($email =~ /./ && $email =~ /@/)
{$bool002 = 1}

Wenn $email nur einen Punkt enthält, wird $bool002 nicht eins gesetzt.
Wenn $email weder Punkt noch @ besitzt, wird $bool002 auch nich gleich eins gesetzt.

Sobald $email aber ein @ enthält, wird $bool002 gleich 1 gesetzt.
Da Punkt und @ in der Bedingung aber mit einem logischen UND verbunden
sind, dürfte $bool002 nur gleich 1 gesetzt werden, wenn $email Punkt und
@ enthält.

Was ist falsch????
PS: Ein Backslash "" vor das @ bringt nichts.....

Wäre cool wenn jemand etwas wüsste....

  1. hi!

    unless ($email =~ /./ && $email =~ /@/)

    »»  {$bool002 = 1}

    Der . (Punkt) im regulären Ausdruck steht für jedes beliebige Zeichen. Deine Bedingung ist also immer war, wenn im $email mindestens irgendein beliebiges Zeichen und ein @ steht. Wenn du vor den Punkt ein \ setzt, müsste es funktionieren.

    Du könntest auch gleich folgenden regulären Ausdruck für eMails verwenden, der wohl eher passen dürfte:
      /[-\w.]+@[-\w]+.[a-zA-Z]{2,}/
    Ich hoffe, da ist jetzt kein Fehler drin :))

    bye, Frank!

  2. hi!

    unless ($email =~ /./ && $email =~ /@/)

    »»  {$bool002 = 1}

    Der . (Punkt) im regulären Ausdruck steht für jedes beliebige Zeichen. Deine Bedingung ist also immer war, wenn im $email mindestens irgendein beliebiges Zeichen und ein @ steht. Wenn du vor den Punkt ein \ setzt, müsste es funktionieren.

    Du könntest auch gleich folgenden regulären Ausdruck für eMails verwenden, der wohl eher passen dürfte:
      /[-\w.]+@[-\w.]+?.[a-zA-Z]{2,}/
    Ich hoffe, da ist jetzt kein Fehler drin :))

    bye, Frank!