linux-l: 3 Fragen zu perl und hashes

Rene Dietze rene at endel-dietze.de
Sa Sep 1 18:03:43 CEST 2001


>>>>> "Ulrich" == Ulrich Wiederhold <U.Wiederhold at gmx.net> writes:


Hallo Ulrich :)

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

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

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

es sollte auch so gehen.
@{$config{'channels'}} = grep !/$input[2]/ , @{$config{'channels'}} ;


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

schon ok :)

    >> for (@{$config{'array'}}) { print $_."\n"; }
    Ulrich> Ist da for schneller als foreach? Wofür ist da der . da?
    Ulrich> Weils ein String als Ausgabe ist? Also zum Verknüpfen?

ja mit . kannst du Verknuepfen
ob es schneller ist .. kann ich dir nicht genau sagen , ich denke schon
"for" muss die daten nicht in eine neue variabe kopieren sondern nimmt
sie gleich vom stack.


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

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

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

hoffe ich konnte helfen ..
gruss rene











Mehr Informationen über die Mailingliste linux-l