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

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?

Replies are listed 'Best First'.
Re: Executing perl code
by SuicideJunkie (Vicar) 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