your whole concept is dubious, but you may want to play around with this code
use strict; use warnings; use Data::Dump qw/pp dd/; $\="\n"; my @var_list; use vars (@var_list = qw/$s1 $s2 $s3 @a1 @a2 @a3/); my %hash = ( s1 => 1, s2 => 2, a1 => [1,2,3], a2 => [], ); { no strict 'refs'; for ( @var_list ) { my ($sigil,$name) = m/^([\$@])(.*)$/; #warn $name; if ($sigil eq '@') { *{$name} = exists $hash{$name} ? $hash{$name} : []; } if ($sigil eq '$') { *{$name} = exists $hash{$name} ? \ $hash{$name} : \ undef } } } # test for my $var ( @var_list) { print "--- $var"; eval "print \"\$var = <$var> isn't false\" if $var"; }

--- $s1 $s1 = <1> isn't false --- $s2 $s2 = <2> isn't false --- $s3 --- @a1 @a1 = <1 2 3> isn't false --- @a2 --- @a3

please note that many things can be false in Perl, including the value 0.

So you may rather test if (defined $scalar) and if (@array) or even better if(exists $hash{name})

I don't think this will really help you, but you may learn from the code! =)

Cheers Rolf
(addicted to the Perl Programming Language :)
Wikisyntax for the Monastery FootballPerl is like chess, only without the dice


In reply to Re: How to create variables for each hash key that has a value. by LanX
in thread How to create variables for each hash key that has a value. by Perl300

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.