Beefy Boxes and Bandwidth Generously Provided by pair Networks
Don't ask to ask, just ask

Answer: Reading Variables from a File

by Anonymous Monk
on Jan 10, 2002 at 11:14 UTC ( #137690=categorized answer: print w/replies, xml ) Need Help??

Q&A > input and output > Reading Variables from a File - Answer contributed by Anonymous Monk

Depending on how you output the data, it could be read back by using a require (or preferably eval).

# save stuff
print FILE '$myvar = ' . $myvar . ";\n";

then to red back, just eval() the file input, or require. You may also consider Data::Dumper, which takes more complex structures and converts them into strings which can be eval()'ed to retrieve the data again.

Of course, this may not be what you're looking for in a CGI environment, as this data file would have to be writable by 'nobody'... don't want to eval it if you're not sure ;)

another option would be this:

# saving
print FILE "myvar = $myvar\n";
print FILE "anothervar = $anothervar\n";

# retrieving
while (<FILE>) {
  if (/^(\w+) *= *(.+)$/) {
     ${$1} = $2;

This is assuming anothervar and myvar are not multi-line strings. This is a little safer than a blind eval(), although it involves symbolic scalar references...

Log In?

What's my password?
Create A New User
[shmem]: but that would mean, also, to drop the "use" not allowed in expression abomination, and make use actually return something useful (as does require at the first call, accidentally)

How do I use this? | Other CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (13)
As of 2017-11-21 17:28 GMT
Find Nodes?
    Voting Booth?
    In order to be able to say "I know Perl", you must have:

    Results (306 votes). Check out past polls.