Du solltest das ganze mit einer Regex machen:
use warnings;
use strict;
my $infile = $ARGV[0];
die("Bitte einen korrekten Dateinamen übergeben!")
if ($infile =~ /\.CATDrawing$/)
Zur Regex:
\. matched auf einen echten Punkt.
. muss escaped werden, da
. in einer Regex sonst auf jedes beliebige Zeichen passt.
$ am Ende der Regex sorgt dafür, dass das Pattern nur am Ende deines Strings matched. Ohne würde z.B. auch sowas matchen:
blafasel.CATDrawing.irgendwas
Nachzulesen unter
perlre.
Auf jeden Fall solltest du in deinen Skripten auch
use warnings; und
use strict; benutzen.
Dein Code hätte schon mal einige Warnungen erzeugt.
Der Operator
!= führt z.B. einen numerischen Vergleich durch, du willst aber Strings vergleichen. Das entsprechende Gegenstück wäre
ne. Mit Wildcard geht das aber nicht, das macht nur einen exakten Vergleich.
Nachzulesen unter
perlop
Ach ja und bei der Zuweisung von
$infile ist auch noch ein Fehler gewesen:
ARGV[0] ist für Perl nur der String
ARGV[0]. Was du willst ist
$ARGV[0].
Last edited: 2009-04-15 10:08:34 +0200 (CEST)