Hi folks
folgende Problemstellung:
Es existiert eine sortierte Liste @include mit Directory-Namen
n:/apache/
n:/apache/conf/
n:/apache/htdocs/
n:/downloads/
n:/eigene dateien/dokus/cgi/
n:/eigene dateien/dokus/cgi/cgi101/
n:/eigene dateien/exceldat/
n:/eindir/
n:/eindir/cvstest/cvs/root
n:/mercury/
(z.B. sollen diese Verzeichnisse inkl. Unterverzeichnissen gesichert werden).
Klar ist, dass in dieser Liste Redundanzen enthalten sind. Wenn ich "n:/apache/" sichere (inkl. aller Unterverzeichnisse), dann sichere ich logischer weise auch "n:/apache/htdocs/" usw. Wie kann man dies möglichst effektiv und elegant lösen, so daß @newinclude wie folgt aussieht.
n:/mercury/
n:/eindir/
n:/eigene dateien/exceldat/
n:/eigene dateien/dokus/cgi/
n:/downloads/
n:/apache/
Ich habe z.Zt. folgende wilde ;-) Konstruktion, die auch funktioniert:
<snippet>
#Redundanzen entfernen
my $pushen = 0;
for (my $i = scalar @include -1 ; $i > 0; $i--)
{
if ($pushen)
{
push (@newinclude,$include[$i+1]);
$pushen--;
}
$pushen++;
for (my $y = $i-1; $y >= 0; $y--)
{
if ($include[$i] =~ /^$include[$y]/)
{
$pushen--;
last;
}
}
}
push (@newinclude, $include[0]);
</snippet>
Vielleicht hat ja jemand Lust, sich da mal durch zuwühlen. Oder hat ein entsprechendes Muster zur Hand ;-)
Und bitte nicht sagen, die Redundanzen _dürfen_ in @include nicht sein. Angenommen, das zugehörige XML-File wurde von einem DAU per Hand erstellt.
Können wir uns darauf einigen?
Bye
Timothy