hey
das nachfolgende skript soll aus einer liste in welcher viele listen stehen alle doppelten datensätz herausfinden und ausgeben, damit sie anhand der ID gefunden und gelöscht werden können
allerdings erhalte ich 1. alle datensätze was ich gar nicht will, 2. auch die datensätze in welchen nur ein argument zutrifft was ich auch nicht will und 3. wie verhindere ich das der eigene datensatz mit erkannt wird
mein skript:
#!/usr/bin/perl -w
use strict;
my @treffer = "";
my @liste1 = ("1", "Alex", "1234", "Lottestr", "Berlin");
my @liste2 = ("2", "Alexander", "4352", "Lotasdas", "Bern");
my @liste3 = ("3", "Hardy", "122234", "Lotestr", "Suhl");
my @liste4 = ("4", "Peter", "224352", "Lotsdas", "Berlin");
my @liste5 = ("5", "Alex", "125634", "Lottestr", "Berlinchen");
my @liste6 = ("6", "Alex", "1234", "Lottestr", "Berlin");
my @liste7 = ("7", "Hardy2", "1242234", "Lotestr", "Sahl");
my @liste8 = ("8", "Peter2", "2243452", "Lotsdas", "Berlin");
my @alle_listen = ([@liste1],
[@liste2],
[@liste3],
[@liste4],
[@liste5],
[@liste6],
[@liste7],
[@liste8]);
my $suchendes_element = "";
my $vergleichendes_element = "";
foreach $suchendes_element (0..$#alle_listen)
{
foreach $vergleichendes_element (0..$#alle_listen)
{
if ( $alle_listen[$suchendes_element]->[1] eq $alle_listen[$vergleichendes_element]->[1]
&& $alle_listen[$suchendes_element]->[4] eq $alle_listen[$suchendes_element]->[4] )
{
print "$alle_listen[$suchendes_element]->[0]";
print " - $alle_listen[$suchendes_element]->[1]";
print " - $alle_listen[$suchendes_element]->[4]\n";
}
}
}
dies ist die ausgabe welche ich erhalte:
1 - Alex - Berlin
1 - Alex - Berlin
1 - Alex - Berlin
2 - Alexander - Bern
3 - Hardy - Suhl
4 - Peter - Berlin
5 - Alex - Berlinchen
5 - Alex - Berlinchen
5 - Alex - Berlinchen
6 - Alex - Berlin
6 - Alex - Berlin
6 - Alex - Berlin
7 - Hardy2 - Sahl
8 - Peter2 - Berlin
------------------------------------------------------
Hardy Weindorf
das nachfolgende skript soll aus einer liste in welcher viele listen stehen alle doppelten datensätz herausfinden und ausgeben, damit sie anhand der ID gefunden und gelöscht werden können
allerdings erhalte ich 1. alle datensätze was ich gar nicht will, 2. auch die datensätze in welchen nur ein argument zutrifft was ich auch nicht will und 3. wie verhindere ich das der eigene datensatz mit erkannt wird
mein skript:
#!/usr/bin/perl -w
use strict;
my @treffer = "";
my @liste1 = ("1", "Alex", "1234", "Lottestr", "Berlin");
my @liste2 = ("2", "Alexander", "4352", "Lotasdas", "Bern");
my @liste3 = ("3", "Hardy", "122234", "Lotestr", "Suhl");
my @liste4 = ("4", "Peter", "224352", "Lotsdas", "Berlin");
my @liste5 = ("5", "Alex", "125634", "Lottestr", "Berlinchen");
my @liste6 = ("6", "Alex", "1234", "Lottestr", "Berlin");
my @liste7 = ("7", "Hardy2", "1242234", "Lotestr", "Sahl");
my @liste8 = ("8", "Peter2", "2243452", "Lotsdas", "Berlin");
my @alle_listen = ([@liste1],
[@liste2],
[@liste3],
[@liste4],
[@liste5],
[@liste6],
[@liste7],
[@liste8]);
my $suchendes_element = "";
my $vergleichendes_element = "";
foreach $suchendes_element (0..$#alle_listen)
{
foreach $vergleichendes_element (0..$#alle_listen)
{
if ( $alle_listen[$suchendes_element]->[1] eq $alle_listen[$vergleichendes_element]->[1]
&& $alle_listen[$suchendes_element]->[4] eq $alle_listen[$suchendes_element]->[4] )
{
print "$alle_listen[$suchendes_element]->[0]";
print " - $alle_listen[$suchendes_element]->[1]";
print " - $alle_listen[$suchendes_element]->[4]\n";
}
}
}
dies ist die ausgabe welche ich erhalte:
1 - Alex - Berlin
1 - Alex - Berlin
1 - Alex - Berlin
2 - Alexander - Bern
3 - Hardy - Suhl
4 - Peter - Berlin
5 - Alex - Berlinchen
5 - Alex - Berlinchen
5 - Alex - Berlinchen
6 - Alex - Berlin
6 - Alex - Berlin
6 - Alex - Berlin
7 - Hardy2 - Sahl
8 - Peter2 - Berlin
------------------------------------------------------
Hardy Weindorf
Kommentar