我是Perl的新手,也是XML::Simple的第一个计时器。
我有一个foreach
循环(XML数据已经输入$xmlHash
)
foreach (@{$xmlHash->{$PROTEIN}->{$PEPTIDE}}) {}
当$ peptide键包含多个肽时,它可以工作90次。然而,蛋白质91(以及之后的许多其他蛋白质)只有一个肽(标量值),导致perl
抛出
Not an ARRAY reference at C:\...
使foreach循环与标量$PEPTIDES
一起使用的最佳方法是什么?
答案 0 :(得分:6)
请参阅XML::Simple
文档中的ForceArray。
答案 1 :(得分:2)
使用
XMLin($xml, ForceArray => [ $PEPTIDE ])
for (@{ $xmlHash->{$PROTEIN}->{$PEPTIDE} }) { ... }
可替换地,
sub listify {
return () if !defined($_[0]);
return ref($_[0]) eq 'ARRAY' ? @{ $_[0] } : $_[0];
}
for (listify $xmlHash->{$PROTEIN}->{$PEPTIDE}) { ... }