in reply to Can't use string ("1") as a SCALAR ref while "strict refs" in use

($a,$b,$c,$d)=map {eval(\$$_)} (1..4);}

You probably meant

... = map {eval "\$$_"} (1..4);

i.e. you want to evaluate the strings '$1', etc., which you get by interpolating $_ into the double-quoted expression "\$$_".  In this case it would also run under strict.

That said, I agree with Corion that there are better ways to achieve the same...