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-->