как печатать данные с помощью шаблонного модуля - PullRequest
0 голосов
/ 04 ноября 2011

Мой английский немного плох, поэтому не стесняйтесь, если не поняли.У меня проблема с модулем набора инструментов Perl.Это мой первый опыт использования этого модуля. Я читаю XML-данные из файла и использую XML :: Simple (ForceArray) для анализа и DATA :: Dumper для печати.Данные для печати:

$var1={

       'data'=>{
                  'employee'=>[
                            {
                           'name'=>'suraj',
                           'number'=>'f11a0478',
                           'adress'=>' badvel,kadapa,a.p,india',
                            },

                           {
                           'name'=>'misra',
                           'number'=>'047902',
                           'adress'=>' raipur,ananthapur,a.p,india',
                            }...........
                             ...........
                          ],          

    'company'=>{
              'name'=>'bosch',
              'location'=>'banglore',
              'domain'=>{
                     'java'=>{
                            'employee'=>[
                                     {
                                    'name'=>'suraj',

                                    'number'=>'f11a0478',

                                    'experience'=>{
                                              'years'=>'3',
                                              'projects'=>'4',

                                              }
                                           },
                                   {
                                    'name'=>'misra',

                                    'number'=>'047902',

                                    'experience'=>[
                                                 {
                                                  'years'=>'1',

                                                  'projects'=>'1',

                                                  },
                                                 {
                                             'years'=>'1',

                                             'projects'=>'1',

                                              }
                                             ]
                                           },   
                                          ]
                            }
                    }................
                    .................
             };

Я использовал такой шаблонный инструментарий и напечатал его в некотором файле, я написал такой код

[% FOREACH comp IN company %]
[% comp.name %] 
[% comp.location%]
employeedata:
[% FOREACH employee IN comp.domain.java.employee %]
employee name: [% employee.name +%] numb [%+ employee.number %]
   [% FOREACH experience IN employee. experience %]
[% experience.years %]
[% experience.projects %]
 [% END %]
 [% END %]
[% END %]

С помощью приведенного выше сценария я могу напечатать сотрудника компанииназвание, номер, опыт, годы, проекты.Но моя проблема в том, что мне нужно добавить адрес сотрудника и к этой информации.Я печатаю всю информацию в узле компании и для всей компании.Но в адресе находится какой-то другой ключ в хеше.Используя имя и номер сотрудника (некоторые сотрудники имеют одинаковые имена, некоторые имеют одинаковые номера), мне нужно найти адрес и распечатать адрес в данных сотрудника.помогите мне с этой проблемой.Что мне теперь делать, как решить эту проблему.

1 Ответ

1 голос
/ 04 ноября 2011

Вы можете сделать:

[% FOREACH de IN data.employee %]
  [% IF de.name == employee.name && de.number == employee.number %]
    [% de.address %]
    [% LAST %]
  [% END %]
[% END %]

Я бы порекомендовал что-то сделать со структурой данных, прежде чем обрабатывать ее с помощью TT, потому что это не очень эффективно.Если comp.domain.java.employee и data.employee содержат одинаковое количество элементов, это довольно просто.

РЕДАКТИРОВАТЬ: То, что я имел в виду в моем комментарии ниже, это

[% FOREACH employee IN comp.domain.java.employee %]
  [% addresses = [] %]
  [% FOREACH de IN data.employee %]
    <!-- Name, experience etc. -->
    <!-- Then new address stuff: -->
    [% IF de.name == employee.name || de.number == employee.number %]
      [% addresses.push(de.address) %]
    [% END %]
  [% END %]
  [% addressStr = addresses.join(', '); addressStr.replace(', ([^,]+)$', ' or $1') %]
  [% addressStr %]
[% END %]

Это не печать адресов, таких как address1, address2 or address3?

...