Beefy Boxes and Bandwidth Generously Provided by pair Networks
Do you know where your variables are?

Executing a string as a Perl command

by tel2 (Pilgrim)
on May 10, 2011 at 01:25 UTC ( #903872=perlquestion: print w/replies, xml ) Need Help??

tel2 has asked for the wisdom of the Perl Monks concerning the following question:

Hi Monks,

What is a simple way to execute a string as a Perl command, in a Perl script?

For example, let's say I have a scalar assignment like this:

$cmd = '$var1 = 5;';

If I want to execute $cmd, ending up with $var1 containing 5, what's an easy way to do it, (without parsing the string, picking out the variable & value, and making the assignment with an indirect reference).  I've looked at 'eval', and other posts here, but can't find anything appropriate yet.


Replies are listed 'Best First'.
Re: Executing a string as a Perl command
by ikegami (Pope) on May 10, 2011 at 01:34 UTC
Re: Executing a string as a Perl command
by tel2 (Pilgrim) on May 10, 2011 at 01:59 UTC

    Thanks guys,

    Before creating this thread, I had made the mistake of testing it like this:

    perl -e '$cmd = "$var1 = 5;";eval $cmd;print $var1'

    but of course that failed because of the double quotes.  So now I've changed it to this:

    perl -e '$cmd = q[$var1 = 5;];eval $cmd;print $var1'

    which works just like a bought one.

    Thanks for your help.


      Please try below code

      my $cmd = '$var1 = 5'; eval "$cmd"; print $var1;
        Why the double quotes? eval $cmd; works fine, no need for an additional stringification.
        1. ...and your point (aside from the fact that your code prints "5") is...?
        2. ... and this is better than

          my $var1 = 5; print $var1;

Re: Executing a string as a Perl command
by educated_foo (Vicar) on May 10, 2011 at 01:29 UTC
    What's wrong with "eval"?

Log In?

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlquestion [id://903872]
Approved by ikegami
Front-paged by Corion
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others taking refuge in the Monastery: (5)
As of 2021-10-20 16:53 GMT
Find Nodes?
    Voting Booth?
    My first memorable Perl project was:

    Results (81 votes). Check out past polls.