Reguläre Ausdrücke in Perl

#!/usr/bin/perl -w
# Reguläre Ausdrücke in Perl
# Programm starten mit der Option -C

use strict;
use locale;
{
   my $zeile = "  name\@yahoo.com   Heute ab 17:00 ist dieee die Weihnachtsfeier in der Cafeteria in der Oettingenstr. Alle sind herzlich eingeladen.\n";
   print("Unsere Zeile <$zeile>\n");
   
   # RegEx
   print"\n# RegEx #\n\n";
   
   if ($zeile =~ /die/) {
      print "Match. In der Zeile gibt es \"die\".\n"; 
   } else {
      print "No match.\n";
   }
   
   if ($zeile !~ /das/) {
      print "Match. In der Zeile gibt es kein \"das\".\n"; 
   } else {
      print "No match.\n";
   }
   
   
   # Quantoren
   print "\n# Quantoren #\n\n";
   
   if ($zeile =~ /(Heutes*)/) {
      print "Match <$1>.\n"; 
   } else {
      print "No match.\n";
   }
   
   if ($zeile =~ /(Heutes+)/) {
      print "Match <$1>.\n"; 
   } else {
      print "No match.\n";
   }
   
   if ($zeile =~ /(die{1,5})/) {
      print "Match <$1>.\n"; 
   } else {
      print "No match.\n";
   }
   
   
   # Greedy-Nongreedy
   print "\n# Greedy-Nongreedy #\n\n";
   
   if ($zeile =~ /(Heut.+ )/) {
      print "Match <$1>.\n"; 
   } else {
      print "No match.\n";
   }
   
   if ($zeile =~ /(Heut.+? )/) {
      print "Match <$1>.\n"; 
   } else {
      print "No match.\n";
   }
  
   # Globale Suche /g
   print "\n# Globale Suche /g #\n\n";
   
   while ($zeile =~ /(in der)/g){
      print "Match <$1>.\n"; 
   }
   
   # Zugrif auf grupierte Elemente
   print "\n# Zugrif auf grupierte Elemente #\n\n";
   
   #                                      $2
   #                   $1          $3           $4
   while ($zeile =~ /(in der) ((Cafeteria)|(Oettingenstr))/g) {   # Hier das '|'-Zeichen bedeutet ODER
      print "Match <$1 $2>\n";
   }
   
   
   #                      $1
   #                  $2    $3
   if ($zeile =~ /( (.+?)@(.+?) )/) {
      print("e-mail = <$1>\n");
      print("<Name = $2 Domain = $3>\n");
   }
}