Also, hier noch mal das ganze Skript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
#!/usr/bin/perl
use strict;
use warnings;
my @names = qw/webmaster *webmaster webmaster*/;
for my $string (qw/Alfred webmaster wwwebmaster webmasters/) {
  for (0..$#names) {
    my $name = $names[$_];
    print "$name matcht auf $string ";
    my $begin = $name =~ s/^\*// ? qr// : qr/^/;
    my $end = $name =~ s/\*$// ? qr// : qr/$/;
    if ($string =~ /$begin\Q$name\E$end/) {
      print "sehr gut.";
    } else {
      print "nicht.";
    }
    print "\n";
  }
}
 
 
Ausgabe davon ist:
webmaster matcht auf Alfred nicht.
*webmaster matcht auf Alfred nicht.
webmaster* matcht auf Alfred nicht.
webmaster matcht auf webmaster sehr gut.
*webmaster matcht auf webmaster sehr gut.
webmaster* matcht auf webmaster sehr gut.
webmaster matcht auf wwwebmaster nicht.
*webmaster matcht auf wwwebmaster sehr gut.
webmaster* matcht auf wwwebmaster nicht.
webmaster matcht auf webmasters nicht.
*webmaster matcht auf webmasters nicht.
webmaster* matcht auf webmasters sehr gut.
 
 
Wenn bei Dir etwas anderes rauskommt, Tom, dann ist Dein Perl wohl wirklich kaputt ;-)
Beachte, dass die Variable $name veraendert wird hierbei. Man sollte sie also hinterher nicht wiederverwenden.\n\n
<!--EDIT|betterworld|1089999035-->