linux-l: 3 Fragen zu perl und hashes

Ulrich Wiederhold U.Wiederhold at gmx.net
Fr Aug 31 23:10:51 CEST 2001


Hallo Rene,
danke für die Hilfe.
* Rene Dietze <rene at endel-dietze.de> [010831 22:03]:
>     Ulrich> 1. Ich habe ein Array mittels einer Referenz einem Hash
>     Ulrich> zugeordnet, so daß ich mittels "@{$config{'array'}}" auf
>     Ulrich> das Array zugreifen kann. Wenn in dem Array 5 elemente
>     Ulrich> sind (element1, element2, element3, element4, element5),
>     Ulrich> wie kann ich dann z.B. element3 löschen?
> 
> splice(@{$config{'array'}},2,1);

Ich sollte wirklich lernen, Fragen zu stellen.
In dem Fall weiß ich, daß das zu löschende Element an Position 3
steht. Wenn ich das aber nicht weiß ?
Ich nutze zur Zeit folgendes, was ziemlich umständlich ist:

   foreach my $chan (@{$config{'channels'}}) {
     $chan eq $input[2] and do {        # $input[2] ist die Eingabe, die gelöscht werden soll
           };
     $chan ne $input[2] and do {
          push(@between,$chan);
           };
     }
 @{$config{'channels'}} = "";
 @{$config{'channels'}} = @between;
                                                                                                              
*****
@{$config{'channels'}} enthält ('#a','#b','#c','#i','#s','#sxdg','#dsldkf');
Angenommen $input[2] enthält '#s', wie kann ich das einfach entfernen?

> hmmm was meinst du damit einem key im hash %config dann
> delete $config{'key'};
Yep. Typo, sorry.

> for (@{$config{'array'}})
> {
>     print $_."\n";
> }

Ist da for schneller als foreach? Wofür ist da der . da? Weils ein
String als Ausgabe ist? Also zum Verknüpfen?

> die syntax @{ } macht das gleiche wie @$
Hmm, ich habe gerade über 20 Seiten komplett auf ein hash umgestellt...
da hätte ich mir ne Menge Tipperei ersparen können. Außerdem wird mir
jetzt ein Teil einer Perl-Doku klarer...

Danke nochmal, vielleicht fällt Dir ja zu meinen Rückfragen auch noch
was ein?
Gruß
Uli

-- 
'The box said, 'Requires Windows 95 or better', so i installed Linux - TKK 5



Mehr Informationen über die Mailingliste linux-l