这个perl对象是什么以及如何遍历它?

时间:2014-07-18 04:40:49

标签: perl

我有一个perl对象返回给我,我的数据似乎无法提取。如果我运行Data :: Dumper->转储为:

Data::Dumper->Dump($message_body)

我明白了:

$VAR1 = 'SBM Message
';
$VAR2 = '--SBD.Boundary.605592468
';
$VAR3 = 'Content-Type: text/plain;charset=US-ASCII
';
$VAR4 = 'Content-Disposition: inline

如果我执行该行:

print $message_body;

我明白了:

ARRAY(0x9145668)

我认为这是一个数组。但是,尝试迭代它只看起来只有一个元素。如何从中提取每个元素?顺便说一句,这基本上是使用MIME :: Parser包提取的邮件消息的正文。它是使用以下内容创建的:

my $parser = new MIME::Parser;
my $entity = $parser->parse($in_fh); # Where $in_fh points to a mail message
$message_body = $entity->body;

2 个答案:

答案 0 :(得分:3)

尝试以下foreach循环。

foreach my $item (@{$message_body})
{
   print $item."\n";
}

$message_body是ARRAY参考。因此,您需要取消引用它,然后使用foreach循环遍历每个元素。

阅读:

http://perlmeme.org/howtos/using_perl/dereferencing.htmlhttp://www.thegeekstuff.com/2010/06/perl-array-reference-examples/

答案 1 :(得分:-1)

Data::Dumper只是穷人看到内容的选择。 要查看所有血腥内部细节,请改用Devel::Peek

use Devel::Peek;
Dump $message_body;