Thread if Bedingung mit Wildcard (8 answers)
Opened by guest at 2009-04-15 09:52

nepos
 2009-04-15 10:05
#120573 #120573
User since
2005-08-17
1420 articles
BenutzerIn
[Homepage] [default_avatar]
Du solltest das ganze mit einer Regex machen:
Code (perl): (dl )
1
2
3
4
5
6
7
8
#!/usr/bin/perl

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)

View full thread if Bedingung mit Wildcard