in reply to Dynamic variables and strict
Having said that, your idea of using an eval can work as per below example. Just keep in mind that:
Output from program is:#!/usr/bin/perl use warnings; use strict; my @accepted_vars = qw( myvar1 myvar2 ); my $myvar1; # must declare variable beforehand! my $myvar2; my @lines = <DATA>; chomp @lines; foreach (@lines) { if ( /^\s*(.*?)\s*=\s*(.*)/ && grep $1 eq $_ , @accepted_vars ) { eval '$'."$1 = '$2'"; warn "eval failed: $@\n" if $@; } else { warn "Illegal config var '$1'\n"; } } print "myvar1 = '$myvar1'\n", "myvar2 = '$myvar2'\n"; __DATA__ myvar1 = foo myvar2 = bar evil_var = foo
Illegal config var 'evil_var' myvar1 = 'foo' myvar2 = 'bar'
|
|---|