work with Mac plists at a low level
This module is a low-level interface to the Mac OS X Property List (plist)
format. You probably shouldn't use this in applications--build interfaces
on top of this so you don't have to put all the heinous multi-level object
stuff where people have to look at it.
You can parse a plist file and get back a data structure. You can take that
data structure and get back the plist as XML. If you want to change the
structure inbetween that's your business. :)
You don't need to be on Mac OS X to use this. It simply parses and
manipulates a text format that Mac OS X uses.
The Property List format
The MacOS X Property List format is simple XML. You can read the DTD to
get the details.
One big problem exists--its dict type uses a flat structure to list
keys and values so that values are only associated with their keys by
their position in the file rather than by the structure of the DTD.
This problem is the major design hinderance in this module. A smart XML
format would have made things much easier.
If the parse_plist encounters an empty key tag in a dict structure
(i.e. '' ) the function croaks.
The Mac::PropertyList classes
A plist can have one or more of any of the plist objects, and we have
to remember the type of thing so we can go back to the XML format. Perl
treats numbers and strings the same, but the plist format doesn't.
Therefore, everything 'Mac::PropertyList' creates is an object of some
sort. Container objects like 'Mac::PropertyList::array' and
'Mac::PropertyList::dict' hold other objects.
There are several types of objects:
* new( VALUE )
Create the object.
Access the value of the object. At the moment you cannot change the
Access the type of the object (string, data, etc)
Create a string version of the object, recursively if necessary.