SPUG: Ordered Hash Tie Class

Chris Wilkes cwilkes-spug at ladro.com
Tue Apr 6 12:34:48 CDT 2004


On Tue, Apr 06, 2004 at 10:03:13AM -0700, Ingmar Ellenberger wrote:
> 
> I need it to be able to handle multiple values for a given key and have
> handlers to deal with them.
> 
> What I'm REALLY trying to do is create tools to manipulate Java property
> files while while maintaining comments and whitespace.

Can you have multiple values for a single key in java property files?
Most of mine look like this:
   # this is a comment
   # remote directory
   remotedir=/home/qubert/files

   # username for scp
   username=blah

as for whitespace, I haven't seen that in use either, but I would
imagine its done like this:
   message="I'm in the Dilbert Zone"
correct?

I take it eventually you want to get to something like this:
  $prop = My::JavaProperty->new("clothingreport.properties");
  @keys = $prop->getKeys();
  $columns = $prop->get("columns");
  $columns++;
  $prop->set("columns", $columns);
  $prop->save();
it might be handy to have a method ->getComment() to get the comment
lines above a certain key.  Course then you would have to stipulate that
one seperates keys with whitespaces.

What I would do is slurp everything into an array (as property files are
never that long) and then when someone requests a key, just go through
the array looking for it, keeping track of its position in the array.
Then when they change it, just change that position's value.

And I could of saved myself a lot of time by looking on CPAN first, as
there's a Config::Properties module out there:
  http://search.cpan.org/~salva/Config-Properties-0.56/Properties.pm
so I would see if that suits your needs.

You might want to also look into including a way of checking this into
CVS so that you can easily (hah!) revert back to an old setting.

Chris



More information about the spug-list mailing list