@Ronnie leider ist dein Code für mich an einigen Stellen schwer nachzuvollziehen.
Ich habe es nochmals selbstversucht aber es scheint so nicht zu klappen obwohl es so doch idiotensicher gehen müsste:
Ich speicher immer die gefundenen Indizes speichere die Werte und lösche die Indizes bis das Array vollständig bearbeitet wurde:
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
while(@satz)
{
my $quellelement=$satz[0]; #Erstes Element Satz nur für den späteren Vergleich nötig
my $quelldatei=$datei[0]; #jeweils erste Datei
push(@ungleich,$quelldatei);#Die Quelldatei wird in ungleich gespeichert
for my $pos($satz[1]..$#satz) #vom jeweils zweiten Element bis zum letzten
{
if ($quellelement eq $satz[$pos]) #Wenn erstes Element nochmals vorkommt
{
if ($counter==0) #Prüfe ob das Quellelement schon bearbeitet wurde
{
push(@gleich,$quelldatei); #Kopiere einmalig das jeweils erste Element in gleich
push(@Index,0); #Merk dir den Index
$counter++; #Zähler ist nun 1 somit wird die Schleife erstmal verlassen
}
push(@gleich,$datei[$pos]); #Speichere nun die anderen Werte in gleich
push(@Index,$pos); #und deren Position
}
}
$counter=0;
foreach my $element(@Index) #Löschen der nun schon verarbeiteter Indizes
{
splice @datei,$element,1;
splice @satz,$element,1;
}
@Index=(); #Neuinitialisierung von Index
}
system ("cp -v @gleich ./doppelt"); #Kopiere alle Dateien die identischen Inhalt haben
system("cp -v @ungleich ./einfach"); #Kopiere alle einfach vorkommenden Dateien
Danke bislang für eure Mühe!
Gruß
SkY