#!/usr/bin/perl use strict; use warnings; use diagnostics; my %hash = ( strang1 => { string => 'string foo1', hash => { 'key foo2' => 'value foo3', }, array => [ 'foo4 im Array0', 'foo5 im Array1', ], }, ); print rekursive_hash_suche(\%hash,'foo'); sub rekursive_hash_suche { my ($ref,$suche) = @_; my %algo; $algo{SCALAR} = sub { my ($ref,$suche) = @_; my $fund = 0; $fund = 1 if $ref =~ /foo/; $fund; }; $algo{ARRAY} = sub { my ($ref,$suche) = @_; my $fund = 0; foreach my $k (@$ref) { my $fund = $algo{ref($ref->{$k})}($ref,$suche); last if $fund; } $fund; }; $algo{HASH} = sub { my ($ref,$suche) = @_; my $fund = 0; foreach my $k (keys %$ref) { print "ref:".ref($ref->{$k})." in ".$ref->{$k}."\n"; my $fund = $algo{ref($ref->{$k})}($ref,$suche); last if $fund; } $fund; }; return $algo{HASH}($ref,$suche); }