Patrick Andrieu: In komplexer Datenstruktur suchen

Beitrag lesen

Hallo Siechfred!

Schön, dass Du wieder angeschlossen bist ;)
Nur im Büro, zu Hause noch nicht :)

Ja, aber das ist schon mal was. Und daheim ist für die Familie ;)

Apropos Familie... Nachdem ich mir letztens einen neuen Laptop gegönnt habe, habe ich meinem Patenkind Jacqueline den aus allen Löchern pfeifenden alten gegeben. Und dadurch, dass sie, noch nicht lesen könnend, nur die Spiele von bspw. kika.de spielt, meistens Flash-Animationen, jagt sie dadurch die CPU hoch, und nach ca. 20-30mn erfolgt was ich den geheimen, automatischen Kinderschutz nennen würde: Die Kiste schaltet sich von selbst aus. So kann ich sicher gehen, dass sie nicht am Computer »kleben» bleibt!

Du hast da wohl was missverstanden: Defaultmäßig werden walk und walkdepth exportiert, wanted ist nur ein Platzhalter für Deine Suchfunktion, also die Funktion, die für jedes Element ausgeführt wird, das gefunden wurde. Diese Funktion musst Du schon irgendwo deklarieren.

Ah, Danke. Ja, ich hatte den Abschnitt »the wanted function« zwar gelesen, aber nicht richtig verstanden.

sub wanted {

# tu was mit $_
  # siehe auch [link:http://search.cpan.org/~guido/Data-Walk-1.00/lib/Data/Walk.pm#THE_WANTED_FUNCTION@title=vordefinierte Variablen]
}

  
Ah ja, jetzt erhalte ich Ergebnisse:  
  
~~~perl
use strict;  
use Data::Walk;  
  
my $hash = # wie im OP  
  
walk \&wanted, %hash;  
  
sub wanted {  
  print $Data::Walk::container if $_ eq 'sponge bob';  
}

Ausgabe:
ARRAY(0x187b0c8)

Nur, das erhielt ich mit meiner häßlichen Funktion vom OP irgendwie auch:

Bei $somewhat = 'sponge bob'; ist die Ausgabe:

sponge bob ist im ARRAY(0x1831d30)

ohne 14KB an Modul einzubinden ;). Interessant aber ist die Rekursionstiefe, da wüßte ich nicht, wie ich sowas realisieren könnte, und das werde ich sehr warhscheinlich gebrauchen können. Werde mal weiter mit dem Modul experimentieren, danke für den Tipp!

BTW: Werden die Speicherplätze bei jedem Skriptaufruf neu zugewiesen? Vergl.: ARRAY(0x187b0c8) und ARRAY(0x1831d30) für das Array, das 'sponge bob' enthält.

Viele Grüße aus Frankfurt/Main,
Patrick

--

_ - jenseits vom delirium - _
[link:hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash]
Nichts ist unmöglich? Doch!
Heute schon gegökt?