Hmmm... probieren wir's mal...
Schleife über alle Elemente aus Array 1
Ist dieses Element in beiden Arrays?
Ja: Sind diese Elemente gleich?
Ja: Ok, wir brauchen es nicht in der Ausgabe
Nein: Schreibe beide Elemente in das Array diff
Nein: Nur in Array1, ok, schreibs ins Array diff
Ende der Schleife über die Elemente aus Array1
Schleife über alle Elemente aus Array 2
Ist dieses Element in beiden Arrays?
Ja: Ok nichts zu tun, das wurde in der ersten Schleife schon
mit erfasst
Nein: Nur in Array2, ok, schreibs ins Array diff
Ende der Schleife über die Elemente aus Array2
=>
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
for my $elem (@array1) {
my $elem2 = ist_element_in_array($elem, \@array2)
if (defined $elem2) {
if ($elem eq $elem2) {
#Ja: Ok, wir brauchen es nicht in der Ausgabe
}
else {
#Nein: Schreibe beide Elemente in das Array diff
push @diff, ($elem, $elem2);
}
}
else {
# Nein: Nur in Array1, ok, schreibs ins Array diff
push @diff, $elem;
}
}
for my $elem2 (@array2) {
if (ist_element_in_array($elem2, \@array1)) {
# Ja: Ok nichts zu tun, das wurde in der ersten Schleife
# schon mit erfasst
}
else {
# Nein: Nur in Array2, ok, schreibs ins Array diff
push @diff, $elem;
}
}
jetzt musst Du noch die Funktion
ist_element_in_array() mit Leben füllen. Diese bekommt das Element und eine Referenz auf das Array... sie sieht also ca. so aus:
sub ist_element_in_array ($$) {
my $elem = shift;
my $array = shift;
my $elem_wort = (split / /, $elem)[0];
for my $aelem (@$array) {
my $array_wort = (split / /, $aelem)[0];
if ($elem_wort eq $array_wort) {
return $aelem;
}
}
return undef;
}
nun testet man das ganze ... (kommt gleich in nächstem Posting)\n\n
<!--EDIT|Crian|1069078211-->
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;
use strict; use warnings; Link zu meiner Perlseite