On Tue, Dec 16, 2008 at 10:30, Panda-X <exilepa...@gmail.com> wrote:
> Hi Owen,
>
> 2008/12/15 Chas. Owens <chas.ow...@gmail.com>
>>
>> On Mon, Dec 15, 2008 at 04:18, Panda-X <exilepa...@gmail.com> wrote:
>> > Hello,
>> >
>> > I have a hash tree, which sub- and sub-sub-sub ( and whatever )
>> > items inside are all hashes.
>> >
>> > and the next step I dealing with this hash tree is to use
>> > Data::Dumper to dump it out.
>> >
>> > What I hope that the Data::Dumper result can keep the order as
>> > what I declared at very first. Is that anyway I can do this ?
>> >
>> > Thank you very much for any clues.
>> >
>> > Regards,
>> > Panda-X
>> >
>>
>> You can try Tie::IxHash*, but it does not transparently handle
>> nesting.  If your hash has a predictable structure you could write
>> your own version of Dumper that knows the right order.  You could also
>> store an incrementing value with each entry.
>>
>> It is also possible that there is a better solution, but that is
>> dependent on what you are trying to do.  Can you tell us what sort of
>> data you are working with that the order of a hash (a fundamentally
>> unordered data structure) matters?  If it is just that you want a
>> predictable order to the output, set $Data::Dumper::Sortkeys to 1.
>>
>> * http://search.cpan.org/dist/Tie-IxHash/lib/Tie/IxHash.pm
>
> I am trying to deal with this structure, and this is using to ask Tk to
> build the object :
>
> my $interface = {
>   MW => {
>      MENU_mn => { },
>      NOTEBOOK_nb => {
>          TAB_tab1 => {
>              BUTTON_but1 => { },
>              BUTTON_but2 => { },
>           },
>          TAB_tab2 => {
>              FRAME_frmWhatever => {
>                TEXT_someContext => { },
>                BUTTON_save => { },
>              },
>          },
>      },
>   },
> }
>
> But maybe I missed something inside, seems Tie::IxHash do not tie hash
> tree...?
> Am I correct ?
snip

Tie::IxHash is tied to the variable before you put stuff in and only
has an effect on the key order of that hash, not hashes underneath it.

Are you calling some specific Tk method to build the object tree, or
are you doing that yourself?  If you are doing it yourself, then you
probably want something like this instead:


my $interface = [
   { type => 'MW', name => 'mw', children => [
      { type => 'MENU', name => 'mn' },
      { type => 'NOTEBOOK', name => 'nb', children => [
         { type => 'TAB', name => 'tab1', children => [
            { type => 'BUTTON', name => 'but1', callback => \&button1 },
            { type => 'BUTTON', name => 'but2', callback => \&button2 },
         ]},
         { type => 'TAB', name => 'tab2', children => [
            { type => 'FRAME', name => 'frmWhatever', children => [
               { type => 'TEXT', name => 'someContext' },
               { type => 'BUTTON', name => 'save', callback => \&save }
            ]}
         ]}
      ]}
   ]}
];

-- 
Chas. Owens
wonkden.net
The most important skill a programmer can have is the ability to read.

-- 
To unsubscribe, e-mail: beginners-unsubscr...@perl.org
For additional commands, e-mail: beginners-h...@perl.org
http://learn.perl.org/


Reply via email to