http://www.perlmonks.org?node_id=485146


in reply to strict or not strict?

I'm trying to plug a hash into an old piece of code (for a once off) and I was hoping not to have to change every instance of i.e $blah to $hash{'blah'}. Just being lazy...

Replace All is your friend, surely? That or write a one-liner to replace it for you ...

Replies are listed 'Best First'.
Re^2: strict or not strict?
by rsiedl (Friar) on Aug 19, 2005 at 14:20 UTC
    Of course 'replace all' was my first thought, but then I did think of the above method and just wanted to investigate further down this road.
    Hence my question...
    Thanks for your help.

      If the variables are declared already above your loop, then you can do it via string eval. E.g.

      #!/usr/bin/perl use strict; use warnings; my ($blah, $boo, $hoo); # DECLARED HERE my %data = ( "blah"=>1, "boo"=>2, "hoo"=>3 ); # assign each key to a variable of the same name foreach (keys %data) { eval " \$$_ = \$data{$_} "; } # end-foreach print $blah; exit;

      Replace is still probably a better long run strategy.

      -xdg

      Code written by xdg and posted on PerlMonks is public domain. It is provided as is with no warranties, express or implied, of any kind. Posted code may not have been tested. Use of posted code is at your own risk.