Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot
 
PerlMonks  

How can I expand variables in text strings?

by faq_monk (Initiate)
on Oct 08, 1999 at 00:20 UTC ( #605=perlfaq nodetype: print w/ replies, xml ) Need Help??

Current Perl documentation can be found at perldoc.perl.org.

Here is our local, out-dated (pre-5.6) version:

Let's assume that you have a string like:

    $text = 'this has a $foo in it and a $bar';

If those were both global variables, then this would suffice:

    $text =~ s/\$(\w+)/${$1}/g;

But since they are probably lexicals, or at least, they could be, you'd have to do this:

    $text =~ s/(\$\w+)/$1/eeg;
    die if $@;                  # needed on /ee, not /e

It's probably better in the general case to treat those variables as entries in some special hash. For example:

    %user_defs = ( 
        foo  => 23,
        bar  => 19,
    );
    $text =~ s/\$(\w+)/$user_defs{$1}/g;

See also ``How do I expand function calls in a string?'' in this section of the FAQ.

Log In?
Username:
Password:

What's my password?
Create A New User
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others examining the Monastery: (7)
As of 2015-07-28 07:08 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (252 votes), past polls