Hi All, I am working on the below code to traverse through a hash, but it throws an error which states "Can't coerce array into hash at temp.pl line 6."
Code: =============================================================== sub hash_walk { my $self = shift; my ($hash, $key_list, $callback) = @_; while (my ($k, $v) = each (%$hash)) { push @$key_list, $k; if (ref($v) eq 'HASH') { $self->hash_walk($v, $key_list, $callback); } else { $callback->($k, \$v, $key_list); } pop @$key_list; $hash->{$k} = $v; } } my %data = ( a => { ab => 1, ac => 2, ad => { ada => 3, adb => 4, adc => { adca => 5, adcb => 6, }, }, }, b => 7, c => { ca => 8, cb => { cba => 9, cbb => 10, }, }, ); hash_walk(\%data, [], \&replace_all_val_strings); sub replace_all_val_strings { my ($k, $v, $key_list) = @_; printf "k = %-8s v = %-4s key_list = [%s]\n", $k, $$v, "@$key_list"; $$v =~ s/oldstr/newstr/; printf "k = %-8s v = %-4s key_list = [%s]\n", $k, $$v, "@$key_list"; } =============================================================== Could anyone please help me out. Thanks in Advance Anand