[perl] Преобразование набора данных сложной вложенности....
От: Sheridan Россия  
Дата: 06.02.10 09:54
Оценка:
Приветствую!
Есть вот такого вложения данные
my $a = {
    'resources' => {                                                                      
                                                       'Split' => [                                                      
                                                                    {                                                       
                                                                      'count_per_cycle' => {  '' => '3' },                               
                                                                      'ware' => 'Rastar Oil',                               
                                                                      'warehouse' => { '' => '500' }                                      
                                                                    },                                                     
                                                                    {                                                       
                                                                      'count_per_cycle' => {  '' => '5' },                               
                                                                      'ware' => 'Ore',                                      
                                                                      'warehouse' => {  '' => '832' }                                      
                                                                    },                                                    
                                                                    {                                                       
                                                                      'count_per_cycle' => {  '' => '30'   },                               
                                                                      'ware' => 'Energy Cells',                             
                                                                      'warehouse' => {  '' => '5000'  }                                      
                                                                    }                                                       
                                                                  ],                                                        
                                                       'Paranid' => [                                                 
                                                                      {                                                     
                                                                        'count_per_cycle' => {  '' => '4'  },                             
                                                                        'ware' => 'Soja Husk',                              
                                                                        'warehouse' => {    '' => '666'    }                                    
                                                                      },                                                      
                                                                      {                                                     
                                                                        'count_per_cycle' => {  '' => '5'  },                             
                                                                        'ware' => 'Ore',                                    
                                                                        'warehouse' => {  '' => '832'    }                                    
                                                                      },                                                     
                                                                      {                                                     
                                                                        'count_per_cycle' => {   '' => '30'   },                             
                                                                        'ware' => 'Energy Cells',                           
                                                                        'warehouse' => {  '' => '5000' }                                    
                                                                      }                                                     
                                                                    ],                                                      
                                                       'Argon' => [                                                     
                                                                    {                                                       
                                                                      'count_per_cycle' => {  '' => '12'  },                               
                                                                      'ware' => 'Meatsteak Cahoonas',                       
                                                                      'warehouse' => {   '' => '3332'  }                                      
                                                                    },                                                       
                                                                    {                                                       
                                                                      'count_per_cycle' => {  '' => '3'  },                               
                                                                      'ware' => 'Ore',                                      
                                                                      'warehouse' => {  '' => '832' }                                      
                                                                    },                                                      
                                                                    {                                                       
                                                                      'count_per_cycle' => {  '' => '18'  },                               
                                                                      'ware' => 'Energy Cells',                             
                                                                      'warehouse' => {  '' => '5000'  }                                      
                                                                    }                                                       
                                                                  ]                                                         
                                                     }
};

Не могу придумать как это преобразовать таким образом, чтобы из массивов хешей перенести одинаковые элементы в отдельный массив, тоесть после преобразования должно быть так:

my $a = {
    'both_resources' =>     [
                                                                    {                                                       
                                                                      'count_per_cycle' => {  '' => '5' },                               
                                                                      'ware' => 'Ore',                                      
                                                                      'warehouse' => {  '' => '832' }                                      
                                                                    },                                                    
                                                                    {                                                       
                                                                      'count_per_cycle' => {  '' => '30'   },                               
                                                                      'ware' => 'Energy Cells',                             
                                                                      'warehouse' => {  '' => '5000'  }                                      
                                                                    }
            ],
    'resources' => {                                                                      
                                                       'Split' => [                                                      
                                                                    {                                                       
                                                                      'count_per_cycle' => {  '' => '3' },                               
                                                                      'ware' => 'Rastar Oil',                               
                                                                      'warehouse' => { '' => '500' }                                      
                                                                    } 
            ]                                                
                                                       'Paranid' => [                                                 
                                                                      {                                                     
                                                                        'count_per_cycle' => {  '' => '4'  },                             
                                                                        'ware' => 'Soja Husk',                              
                                                                        'warehouse' => {    '' => '666'    }                                    
                                                                      }                                                  
                                                                    ],                                                      
                                                       'Argon' => [                                                     
                                                                    {                                                       
                                                                      'count_per_cycle' => {  '' => '12'  },                               
                                                                      'ware' => 'Meatsteak Cahoonas',                       
                                                                      'warehouse' => {   '' => '3332'  }                                      
                                                                    }                                                      
                                                                  ]                                                         
                                                     }
};
avalon 1.0rc2 rev 300, zlib 1.2.3
build date: 19.08.2009 14:13:36 MSD +04:00
Qt 4.5.2
Matrix has you...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.