#!/usr/bin/env perl #use strict; use warnings; my %params = ( 'default-0' => ['lakja', 'haljl', 'alka'], 'default-1' => 'abc', 'default-2' => [1, 54, 83, 23], 'default-3' => [], 'default-4' => '', 'default-5' => '2019-06-26 00:00:10', ); my %cor = ( 'default-0' => '@arr_0', 'default-1' => '$scal_1', 'default-2' => '@arr_2', 'default-3' => '@arr_3', 'default-4' => '$scal_4', 'default-5' => '$date_5', # etc ); my $evalstr; for(keys %params){ my $varname = $cor{$_}; die "var not found for $_" unless defined $varname; if( $varname =~ /^\$/ ){ next if $params{$_} eq ''; # quote value because it's a string: very basic rule of thumb... $evalstr = "$varname = '$params{$_}';"; } elsif( $varname =~ /^@/ ){ next if @{$params{$_}}==0; $evalstr = "$varname = ".'@{["'.join('","',@{$params{$_}}).'"]};'; } else { die "can't handle $varname = ".$params{$_} } print "eval: $evalstr\n"; eval $evalstr; die "eval $@" if $@; } print '@arr_0='."@arr_0\n".'$scal_1='."$scal_1\n";