hi,
my $s = 'foo.html';
$s =~ /^(.).html$/;
print "$&\n"; # foo.html
$s =~ /^(.).html$/;
print "$&\n"; # same as above
> >
> > $& (alias $MATCH) beeinhaltet in beiden Fällen 'foo.html'. Wo ist der Unterschied, oder anders gefragt: Warum führt das Nicht-Maskieren des zweiten Punkts zu einem Fehler?
>
> Die Aufgabenstellung war, dass alle Dateien, die auf .html enden, berücksichtigt werden.
Passt in beiden Fällen. Siehe Ankersetzung am Ende.
> Deine beiden Fälle passen, weil im ersten Muster der . in foo.html ebenfalls in die Kategorie "beliebiges Zeichen" fällt und im zweiten Fall exakt passt. Das erste Muster lässt auch foo-html zu, das zweite nicht - und damit erfüllt das erste die Anforderung nicht mehr vollständig.
~~~perl
my $s = 'foo-html';
$s =~ /^(.*).html$/;
print "$1 $&\n";
$s =~ /^(.*)\.html$/;
print "$1 $&\n";
# Ausgabe
# foo foo-html
# foo foo-html
Passt also auch in beiden Fällen. Warum ist /^(.*).html$/ bezüglich der Aufgabenstellung falsch?
Hotti