in reply to Dynamic variables and strict

I would much agree on the remarks made by other monks, to use a hash for your config vars is a much cleaner and safer approach.

Having said that, your idea of using an eval can work as per below example. Just keep in mind that:

#!/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
Output from program is:
Illegal config var 'evil_var' myvar1 = 'foo' myvar2 = 'bar'