use Safe; use strict; use warnings; use Data::Dumper; undef $/; my $string = ; my $compartment = Safe->new(); # $compartment->permit_only(qw(???)); # <-- my $hash_ref = $compartment->reval($string); die $@ if $@; print Dumper($hash_ref); __DATA__ # qx(); { 'foo' => 'bar', 'nose' => 'cuke', } __END__ 'quoted execution (``, qx)' trapped by operation mask at (eval 6) line 1, chunk 1. $VAR1 = { 'foo' => 'bar', 'nose' => 'cuke' };