Hi sunny,
Durchsuchbare Inhalte/ Dateien
@files = ('*.shtml','*.htm',
'*/*.shtml','*/*.htm',
'*/*/*.shtml','*/*/*.htm');
enthält Deine Aufgabenstellung eine solche strikte Limitierung auf drei Ebenen, statt eine komplette
rekursive Verarbeitung eines kompletten Baums?
Falls nicht, wäre Dein Problem wahrscheinlich
übersichtlicher zu lösen (Lesetip: File::Find).
foreach $file (@files)
{
$file_ok = 1;
foreach $temp ($files_nicht)
{
if ($temp eq $temp_file || $temp eq $file)
Was soll $temp_file sein?
Wo bekommt diese Variable überhaupt einen Wert her?
{
$file_ok = 0;
}
}
Genau diesen kompletten Block hättest Du bei
Verwendung eines Hashes durch eine einzige Abfrage
ersetzen können.
Ich verstehe allerdings nicht, was Du da tust.
$temp mag beispielsweise einen Dateinamen enthalten,
sagen wir mal 'site/bestaetigung.shtml'.
Aber der wird niemals _identisch_ zu einem Eintrag
aus @files sein! Mit 'eq' machst Du keinen Muster-
vergleich, sondern einen String-Vergleich.
if (-d $file && file_ok == 1)
Das wird also immer wahr sein - oder nie, je nachdem,
was in $temp_file drin steht.
Ich habe Deine Aufgabenstellung nicht verstanden -
aber ich kann mir nicht vorstellen, daß die Methode,
in @files eine statische Liste von Mustern zu halten
und diese dann umständlich weiter zu verarbeiten,
geschickter sein soll, als rekursiv den gesamten
Baum unterhalb von $basedir zu verarbeiten.
Viele Grüße
Michael