[Perl] Dateiendung abfragen

VIPbanner_de

www.VIPbanner.de
ID: 72674
L
1 Mai 2006
2.598
150
Hallo,
ich versuche aus einem String (z.B. https://www.homeserver.de/bildvonmir.gif) die Dateiendung abzufragen. Wenn ich z.B. nur gif Dateien rausfiltern möchte gehe ich laut einem gegoogeltem ergebnis wie folgt vor:

$string = "https://www.homeserver.de/bildvonmir.gif";
if ($string =~ m/.gif/)
{ print "Dateiendung ist eine GIF File!"; }
else
{ print "Dateiendung ist keine GIF File"; }

Da gibts doch bestimmt bessere Lösungen oder? Weil hier fragt man ja nur ab ob .gif vorhanden ist und nicht obs am ende vorhanden ist. Hat jemand nen besseren Vorschlag?
 
Mit Perl kenne ich mich zwar nicht aus, aber ändere mal den regulären Ausdruck um in: m/.gif$/

Wofür steht denn das m zu Beginn? kann man bei Perl den Modifier am Anfang setzen?
 
Mit Perl kenne ich mich zwar nicht aus, aber ändere mal den regulären Ausdruck um in: m/.gif$/

Wofür steht denn das m zu Beginn? kann man bei Perl den Modifier am Anfang setzen?

Der Originalauszug der gegoogelten seite lautet wie folgt:

Pattern Matching Mit dem jetzigen Wissen wollen wir ein Pattern Matching ausführen. Wir wollen nach einem bestimmten Wort in einem String suchen, und sofern gefunden, wollen wir dies dem Benutzer mitteilen.
Ein konkretes Beispiel:
1.$string = "Wir mögen Kamele, auch wenn sie übel riechen";

2.if ($string =~ m/Kamel/)

3.{ print "Kamel gefunden!"; }

4.else

5.{ print "Schade, kein Kamel weit und breit."; }


Ich habs halt nur um mein Beispiel zu verdeutlichen etwas geändert...
 
Funktioniert denn die Erweiterung von mir?
Kannst du ja ganz leicht austesten, indem du bei $string noch etwas hinter dem .gif schreibst..
 
Mit Perl kenne ich mich zwar nicht aus, aber ändere mal den regulären Ausdruck um in: m/.gif$/

Wofür steht denn das m zu Beginn? kann man bei Perl den Modifier am Anfang setzen?

Ganz korrekterweise sei der Hinweis erlaubt das der Punkt . in Perl innerhalb regulärer Ausdrücke ein spezielles Zeichen ist.

Ich würde das eher so schreiben:
Code:
/\.gif$/
ob mit oder ohne m davor ist m.E. egal.
Mit dem Backslash wird der Punkt escapt und tatsächlich auch nach dem Punkt als Zeichen gesucht.
 
Ganz korrekterweise sei der Hinweis erlaubt das der Punkt . in Perl innerhalb regulärer Ausdrücke ein spezielles Zeichen ist.

Oh, über die Stelle habe ich gar nicht mehr herüber geschaut. Da hast du auf jeden Fall recht. Ohne Escaping des Punktes ist jegliches Zeichen vor dem gif erlaubt.