Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation
 
PerlMonks  

Executing perl code

by pglenski (Beadle)
on Feb 13, 2013 at 18:16 UTC ( #1018592=perlquestion: print w/ replies, xml ) Need Help??
pglenski has asked for the wisdom of the Perl Monks concerning the following question:

Hello I am using the module Excel::Writer::XLSX written by John McNamara. It work's great. I have written a perl script which reads a cvs file and then creates a spreadsheet. The module has many characters you can set, such as:
$worksheet = $workbook->add_worksheet(); $workbook->set_landscape() $workbook->set_freeze_panes(2,0)
I would like to populate the settings in a flat file such as:

set_landscape()

hide_gridline(), etc

and then have my script read and execute the settings. I know this doesn't work but this is what I want it to do:
while(<IN>) { chomp; $worksheet->$_ }
Is there someway to do what I want?

Comment on Executing perl code
Select or Download Code
Re: Executing perl code
by SuicideJunkie (Priest) on Feb 13, 2013 at 18:53 UTC

    Just make sure nobody types "format c:" into that configuration script!

    A much safer way to go about it is to read the config file and look up the provided command in a hash to make sure it is legit.

    my ($cmd, @params) = split ',', <$inputFileHandle>; if (exists $hashOfAllowedCommands{$cmd}) { $worksheet->$hashOfAllowedCommands{$cmd}->(@params) }else{ print "Invalid command ignored in config file at line $.\n"; }

    If you still want to play with the dynamite then take a look into eval

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others rifling through the Monastery: (9)
As of 2014-09-01 12:43 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My favorite cookbook is:










    Results (8 votes), past polls