You may find it helpful to use something like YAML to load and save configuration information. It's not an immediate complete solution to your multiple entry problem, but consider the following:

use strict; use warnings; use YAML; use Data::Dump; my %configHash = ( cat => 'Fred', dog => 'Joe', ); my $cfgFileContents = YAML::Dump(\%configHash); Data::Dump::dump (\%configHash); print $cfgFileContents; $cfgFileContents .= "cat: Bob\n"; # User added configuration entry my $loaded = YAML::Load($cfgFileContents); Data::Dump::dump ($loaded); $cfgFileContents = <<DATA; --- cat: - Fred - Bob dog: Joe DATA $loaded = YAML::Load($cfgFileContents); Data::Dump::dump ($loaded);

Prints:

{ cat => "Fred", dog => "Joe" } --- cat: Fred dog: Joe { cat => "Fred", dog => "Joe" } { cat => ["Fred", "Bob"], dog => "Joe" }

Note that the "User added configuration entry" gets lost (YAML specifies that there must be only one entry for each key in a hash and that additional entries will be ignored). However multiple values can be specified for a hash key if they are entries in a nested list, hence the nested array in the last line.

True laziness is hard work

In reply to Re: eval question by GrandFather
in thread eval question by jhuijsing

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.