in reply to Re^2: Can't use string ("2") as a HASH ref while "strict refs" in use
in thread Can't use string ("2") as a HASH ref while "strict refs" in use

as CountZero says -- you've got a situation where the you're referencing something that contains only a value and not a hash ref:

Using your Data structure we walk trough your code and substitute in the values to see the problem.

$My_Value = 'SuperUser'; # assumption for this exercise foreach $item (keys %Myhash){ # $item = 'SuperUser' first pass through if ($item eq $My_Value) { foreach $iteminitem (sort(keys %{$Myhash{'SuperUser'}})){ # $iteminitem = 'Username' first pass through foreach $iteminitem1 (sort(keys %{$Myhash{'SuperUser'}{'Us +ername'}})){ ## Here's the problem: $Myhash{'SuperUser'}{'Username'} = 2 if ($iteminitem1 eq 'name' && $user_number == $Myhash{$item}{ +$iteminitem}{$iteminitem1}) { my $User = $iteminitem; } } } } }

What you probably want to do is check that you have a hash ref in $iteminitem

wrap the line 209 loop in a check

if (ref $iteminitem eq 'HASH') { foreach $iteminitem1 (sort(keys %{$Myhash{$item}{$iteminitem}})){ .... } }
Or perhaps it's time to refactor the code a bit, but without further context that's difficult to say