Hallo Leissi,hier eine function, die ich mir mal geschrieben habe. du kannst die mit Pfad und Pattern aufrufen oder auch mit HashRef 'Pfad', 'Pattern', 'SperrDatei'
den Funktionsaufruf fg_log kannst Du auskommentieren...
Gruß floyd
sub fgaGetFileList {
# Pfad, Pattern(optional)
my $szPfad = shift ( @_ ) || '';
my $szPattern = shift ( @_ ) || '';
my $szSperrDatei;
my $szDummy;
my $szFile;
my @aDummy;
my @aFiles;
# pruefe, ob erste Var (Pfad) Hashref:
#-------------------------------------
if ( ref($szPfad) =~ /HASH/i ) {
my $rohPar = $szPfad;
fgvLog ( 12, "Pfad[$szPfad] ist Hashref -> Lese Parameter aus Hash");
$szPfad = $rohPar->{'Pfad'} || '';
$szPattern = $rohPar->{'Pattern'} || '';
$szSperrDatei = $rohPar->{'SperrDatei'} || '';
} # end if HashRef
unless ( -d $szPfad ) {
fgvLog (14, "Pfad [$szPfad] nicht vorhanden :\n[$!]");
return ();
} # end Pfad nicht vorhanden
$szPfad .='/' unless ( $szPfad =~ /\/\Z/ );
$szDummy = "ls $szPfad";
@aDummy = `$szDummy`;
chomp (@aDummy);
if ( $szSperrDatei ) {
for $szFile ( @aDummy ) {
if ( $szFile eq $szSperrDatei ) {
fgvLog ( 12, "SperrDatei vorhanden -> return ''");
return ();
} # end if passt
} # end for alle Files
} # end if SperrDatei
if ( $szPattern ) {
fgvLog (11, "Pattern vorhanden [$szPattern]");
$szPattern =~ s/\./\\\./;
$szPattern =~ s/\*/.*/;
$szPattern = '\A'.$szPattern.'\Z';
fgvLog ( 11, "Pattern neu gesetzt : [$szPattern]");
for $szFile ( @aDummy ) {
if ( $szFile =~ /$szPattern/ ) {
push @aFiles, $szFile if ( $szFile );
} # end if passt
} # end for alle Files
fgvLog (11, "Rueckgabe mit DateiFilter Anzahl [".scalar(@aFiles)."]");
return @aFiles;
} # end if Pattern
else {
fgvLog (11, "Rueckgabe alles -ohne DateiFilter Anzahl [".scalar(@aDummy)."]");
return @aDummy;
} # end kein Pattern
} # end sub fgaGetFileList
Datum: 17.08.2005-15:00
