2013-08-06 2 views
0

У меня есть массив hash, который я разыменовал в функции msg->attach()Mime::Lite. Код выглядит следующим образом:Perl Mime :: Lite hash of array derefrence

for my $href (@$aref){ 
    $msg->attach(
      Type  => 'text', 
      Data  => "productype: $href->{prodtype} product: $href->{product} qbs_id:$href->{qbs_id}\n"; 
    ); 
} 

Он указывает на синтаксическую ошибку в приведенном выше примере. Пожалуйста, сообщите мне, если это правильный способ поставить msg->attach() в цикле, или мы не сможем сохранить его в цикле. Спасибо.

+0

Разрушение '$ href' в' qbs_id' нарушено (по крайней мере, в фрагменте кода). – collapsar

+0

Я запутался с частью редактирования. Простите за это. Я отредактировал его. Пожалуйста, взгляните еще раз. – deep

+0

прислушайтесь к уведомлению об амоне: список аргументов для вызова 'attach' по-прежнему заканчивается символом'; ', который является синтаксически недействительным! – collapsar

ответ

3

Внутри списка аргументов для attach, не может быть точек с запятой ;. Используйте запятую , отделить аргументы:

for my $href (@$aref) { 
    $msg->attach(
     Type => 'text', 
     Data => "productype: $href->{prodtype} product: $href->{product} qbs_id:$href->{qbs_id}\n", 
    ); 
} 

Трейлинг запятая также может быть опущена, но я считаю, что плохой стиль.

+0

Я отредактировал его еще раз. Пожалуйста, проверьте. Извините за путаницу. – deep

+0

@deep Ок. Моя точка с точкой с запятой все еще сохраняется. – amon

+0

Точка взята. Он работает нормально. Но это происходит как привязанность по почте. Я хочу это в теле письма. Пожалуйста, вы можете предложить несколько советов. Спасибо. – deep