Leser: 2
8 Einträge, 1 Seite |
if($file =~ m/($fileformat)/)
1
2
3
4
5
6
7
$ perl -wle'
my $file = "movie.avi";
my $fileformat = ".avi";
if ($file =~ m/($fileformat)/) {
print "match";
}'
match
1
2
3
4
5
6
7
$ perl -wle'
my $file = "movie.avi";
my $fileformat = "\\.avi";
if ($file =~ m/($fileformat)/) {
print "match";
}'
match
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
use strict; use warnings; #---to configure--- #MySQL DB setting my $user = 'bla'; my $password = 'bla'; my $host = 'localhost'; my $database = 'bla'; my $table = 'bla'; #else my @paths = ('/home/matthias/Videos','/mnt/next/g/multimedia/filme','/home/matthias/ttt'); my @fileformats = ('avi','mpg','mpeg','bin'); #---to configure end--- my $check; my $file; for my $path (@paths) { if(-d $path){ search($path); }else{ logP->wirteLog("Path ".$path." don't exist\n"); } } sub checkFileFormat{ my $file = shift; for my $fileformat (@fileformats){ if($file =~ m/($fileformat)/){$check=1;} else{$check=0;} } } sub search{ local *DIR; my $path = shift; opendir(DIR,$path); while($file = readdir(DIR)) { if(($file ne ".") && ($file ne "..")){ if(-d $path."/".$file){ search($path."/".$file); }else{ checkFileFormat($file); if($check==1){ print($check." ".$path."/".$file."\n"); }else{ print($check." ".$path."/".$file."\n"); } } } } closedir(DIR); }
1
2
3
4
5
6
7
8
9
file => test.avi
schleifenbeginn
prüfe ob test.avi "avi" enthält
setze check auf 1
prüfe ob test.avi "mpg" enthält
setze check auf 0
prüfe ob test.avi "bin" enthält
setze check auf 0
if($file =~ m/($fileformat)/){$check=1; last;}
renee+2008-12-12 19:04:03--Du solltest bei einem erfolgreichen Match noch die Schleife abbrechen.
pqbei deiner regex matchst du übrigens nur auf jeweils "avi", "mpg", etc.
eine datei namens avi.mpg würde darauf auch matchen.
1 2 3 4
my @fileformats = ('\\.avi','\\.mpg','\\.mpeg','\\.bin'); ... if($file =~ m/($fileformat)$/){$check=1; last;} #$string =~ m/Bill Clinton$/; else{$check=0;}
GwenDragonWenn du rekursiv den Pfad durchsuchen willst, benutze bitte nicht
local *DIR
für das Dateihandle sondern meinetwegen
my $dir
8 Einträge, 1 Seite |