Yes you can, when you understand it well, eval is a powerfull tool. Read carefully the AnomalousMonk's reply to get rid of the error in your original code: if you have doubts on plain code it will be a pain to debug string evaluated code.

I used eval string form, with no pudor and gaining a lot of critics, in my experiment cpan's namespace navigator.
In my code there is a big evaluation part that transforms data from a text file into a big, big hash.

This is what i remember about my troubles doing that: as usual 'bad data ruins your day', so you need to be sure about what you are evaluating. If you split on withespaces and take the first result as the key you can be bitten by a unexpected strings that can cause code to run outside your intention, or strings that break your data structure.

If you expect a keypair for each line of your file, check for the total count of your keys is equal to line number at the end of file. The field used as key must follow rules for keys names in Perl. If you need to tranform something before using as keys(special chars, withespaces..) you need tobe able to do the two way conversion safely and reliably...
Duplicates are normal in text files but not in hash's key: it will results into an update of such keys on succesive reads of the same string..

Take a look also to Data::Diver module that creates datastructures from strings.

HtH
L*
There are no rules, there are no thumbs..
Reinvent the wheel, then learn The Wheel; may be one day you reinvent one of THE WHEELS.

In reply to Re: Using eval to create a hash by Discipulus
in thread Using eval to create a hash by davidfilmer

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.