Element in Array einfügen WENN NICHT vorhanden
tim
- perl
Hallo!
Wie kann ich ein Element in ein Array einfügen, wenn es nicht schon im Array vorhanden ist?
Ganz konkret: In einer while-Schleife bekomme ich z.B. 20 mal $beispiel="hallo", 30 mal $beispiel="problem" und 10 mal $beispiel="hilfe".
Im Array soll aber nur stehen:
@beispielarray=("hallo","problem","hilfe");
Gibt es da eine einfache Lösung?
Vielen Dank!!!!
Hallo tim,
Ganz konkret: In einer while-Schleife bekomme ich z.B. 20 mal $beispiel="hallo", 30 mal $beispiel="problem" und 10 mal $beispiel="hilfe".
Im Array soll aber nur stehen:
@beispielarray=("hallo","problem","hilfe");
also ich würde .. als eine von vielen möglichen Lösungen .. erst einmal einen Hash aufbauen und dann in ein Array überführen
z.B. (auchtung - ungetesteter code!):
my %h;
while (...) {
$beispiel = ....;
$h{$beispiel} = 1;
}
my @beispielarray = keys(%h);
Grüße
K@rl
hi,
also ich würde .. als eine von vielen möglichen Lösungen .. erst einmal einen Hash aufbauen und dann in ein Array überführen
jow, die Idee ist gut:
Es geht auch kürzer
http://perlbase.xwolf.de/cgi-bin/perlbase.cgi?dis.7.1.3
Gruß, Rolf
z.B. (auchtung - ungetesteter code!):
my %h;
while (...) {
$beispiel = ....;
$h{$beispiel} = 1;
}
my @beispielarray = keys(%h);Grüße
K@rl
hi,
also ich würde .. als eine von vielen möglichen Lösungen .. erst einmal einen Hash aufbauen und dann in ein Array überführen
jow, die Idee ist gut:
Es geht auch kürzer
http://perlbase.xwolf.de/cgi-bin/perlbase.cgi?dis.7.1.3
es geht noch kürzer ;-)
@ar = qw(emil wolle wolle emil erwin erwin rolf rolf otto otto ulla otto);
my %uni;
@uni{@ar} = ();
print join "\n", sort keys %uni;
Struppi.
wow Struppi!
das ist gut... hast Du Lust auf der PerlBase ab und zu mal was einzupflegen und den Content zu managen?
Ehrenamtlich, unverbindlich usw...
Viele Grüße, Rolf
also ich würde .. als eine von vielen möglichen Lösungen .. erst einmal einen Hash aufbauen und dann in ein Array überführen
jow, die Idee ist gut:
Es geht auch kürzer
http://perlbase.xwolf.de/cgi-bin/perlbase.cgi?dis.7.1.3es geht noch kürzer ;-)
Array mit duplikaten
@ar = qw(emil wolle wolle emil erwin erwin rolf rolf otto otto ulla otto);
my %uni;
@uni{@ar} = ();
hash (nur die keys) ausgeben
print join "\n", sort keys %uni;
Struppi.
wow Struppi!
das ist gut... hast Du Lust auf der PerlBase ab und zu mal was einzupflegen und den Content zu managen?
Ich fühle mich geehrt, aber das ist ehrlich gesagt nicht von mir, sondern aus der perlfaq.
Und ich tu mich mit slices selber auch noch schwer.
Aber stimmt, es ist gut ;-)
Ehrenamtlich, unverbindlich usw...
Hab leider (oder zum Glück) schon so ein Projekt, was man restliche Zeit (die ich nicht hier verbringe) aufzehrt.
Struppi.
hi Struppi,
schade,
Hab leider (oder zum Glück) schon so ein Projekt, was man restliche Zeit (die ich nicht hier verbringe) aufzehrt.
naja, was solls, an _der_ Krankheit leiden wir alle.
Viele Grüße, Rolf
Ich habe gerade selbst noch eine prima Lösung mit GREP gefunden:
Innerhalb der while-Schleife:
if (!grep(/$beispiel/,@beispielarray)) {
push(@beispielarray,$beispiel);
}
Es werden nun nur Elemente ins Array geschrieben, die noch nicht darin vorhanden sind.
hi tim,
Innerhalb der while-Schleife:
if (!grep(/$beispiel/,@beispielarray)) {
push(@beispielarray,$beispiel);
}
funzt natürlich; bei einem langen @beispielarray kann das aber gegenüber den anderen vorgeschlagenen Lösungen **ganz erheblich** länger dauern.
Grüße
K@rl
Hallo!
Wie kann ich ein Element in ein Array einfügen, wenn es nicht schon im Array vorhanden ist?Ganz konkret: In einer while-Schleife bekomme ich z.B. 20 mal $beispiel="hallo", 30 mal $beispiel="problem" und 10 mal $beispiel="hilfe".
Im Array soll aber nur stehen:
@beispielarray=("hallo","problem","hilfe");Gibt es da eine einfache Lösung?
#!/usr/bin/perl
my %hash;
@hash{"hallo","problem","hilfe"} = ();
my @input = ("hallo","problem","hilfe", "hallo","problem","hilfe","hallo","problem","hilfe");
foreach(@input)
{
$hash{$_}++;
}
foreach(keys %hash)
{
print "$_ kam $hash{$_} mal vor.\n";
}