I have another perl script that access $id and updates it... [...] Now I have another script that runs after the previous script (file1.pl). The problem is when I access %id in this script (file2.pl), I want the updated %id values (Jim, 16), but I'm getting the original values ("sally", 23). How would I share package values across files and have updates reflected during each access?

From what I understand you want to set the variables via file1.pl:

# this is file1.pl use id; $id{Name} = "Jim";
and then later on call file2.pl and get the previously set value:
# this is file2.pl use id; print $id{Name};

...and expect id.pm to magically store the value 'Jim' and his age?

This will not work. What you need to do is to write 'Jim' to disk and later on read that value from disk.

LanX' answer is misleading because it will not help you solve your problem. (The advice itself is correct, it just fails to solve your problem.)

hippo's answer points to one possible solution but may be a bit hard to understand. (What he suggests is to replace a simple 'memory-backed' hash with something that still looks like a hash, but is actually stored in the filesystem, this is achieved by 'tie'-ing a hash to a file.) Another option would be to manually write the data to the filesystem. This either requires 'file1.pl' and 'file2.pl' not to run at the same time or to make them aware of changes in the underlying file and handle them properly.


In reply to Re: How to update package scoped variables across files? by Monk::Thomas
in thread How to update package scoped variables across files? by Anonymous Monk

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.