in reply to Re^2: Reading from a flat text file database and storing contents in a hash
in thread Reading from a flat text file database and storing contents in a hash

*sighs* I provide you with a suggestion. You say "That's cool, but can you debug what's wrong with this other mechanism?" XML is a very poor solution for this, which is why I suggested DBM::Deep. dbm-deep is designed to solve this specific problem that you're working with - easy persistence of Perl datastructures.

Use the proper solution for the job. XML isn't it.


My criteria for good software:
  1. Does it work?
  2. Can someone else come in, make a change, and be reasonably certain no bugs were introduced?
  • Comment on Re^3: Reading from a flat text file database and storing contents in a hash

Replies are listed 'Best First'.
Re^4: Reading from a flat text file database and storing contents in a hash
by wishartz (Beadle) on Apr 20, 2007 at 14:52 UTC
    OK I'll stop using the XML::Simple and try DBM::Deep instead. It just looked a bit more complicated, when I glanced at it.
      I think that people look at DBM::Deep and go "It can't be that simple, so it's got to be really hard cause I don't understand it." This is your code, with the changes needed to make it DBM::Deep'ed.
      # First script, to populate the db file: use DBM::Deep; our %services; tie %services, 'DBM::Deep', 'file.db'; %services = ( 1 => { name => "service1", host => { host1 => 1 }, }, 2 => { name => "service2", host => { host0 => 2, host5 => 2 }, }, ); ###################### # Second script, to print the services. our %services; tie %services, 'DBM::Deep', 'file.db'; print "----------------Menu-----------------------------------------\n +"; print "Please enter the number of the service and press return\n"; print "-------------------------------------------------------------\n +"; for $row (sort keys %services){ my $service=$services{$row}; print "$row\t $service->{ name }\n"; } print "Please enter number -->";
      That's it. Note that your usage of %services doesn't change at all.

      My criteria for good software:
      1. Does it work?
      2. Can someone else come in, make a change, and be reasonably certain no bugs were introduced?