hotti: .htaccess

Beitrag lesen

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