$var1 = "2000"; $var2 = "02"; $var3 = "2000"; $var4 = "2"; $var2 does not get interpolated - ie, "02" is not the same as "2" in the context you used. To force numerical context: $array{$var2} = $array{"02"} = undefined $array{$var2+0} = $array{"2"} = 125