Beefy Boxes and Bandwidth Generously Provided by pair Networks
No such thing as a small change

Executing a string as a Perl command

by tel2 (Monk)
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.


Comment on Executing a string as a Perl command
Download Code
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 (Monk) 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
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 scrutinizing the Monastery: (7)
As of 2016-02-07 18:23 GMT
Find Nodes?
    Voting Booth?

    How many photographs, souvenirs, artworks, trophies or other decorative objects are displayed in your home?

    Results (257 votes), past polls