perl中怎么判断一个变量里边存放的是哈希还是数组?

如题!因为如果是哈希表,我就遍历,如果是数组我就得到数组长度然后循环!但是怎么判断这个变量里变到底存放的是哈西还是数组呢?
下边是我读取的一段xml,我就是想判断user是数组还是hash,因为如果只有一个user节点的话,那么就是hash,但是如果两个及以上就是数组,数组的每个元素为hash,假设我不知道xml中user节点的个数,我怎么判断他到底是hash还是数组,因为我要读出user里边属性的值!求perl高手解答!
$VAR1 = {
'hi' => {
'user' => [
{
'content' => 'zhang',
'fullname' => 'Gary R Epstein',
'login' => 'grep'
},
{
'session' => {
'pid' => '12345'
},
'fullname' => 'Simon T Tyson',
'login' => 'stty'
}
]
},
'text' => 'This is a test.'
};
这是解析xml的perl程序
$xml=new XML::Simple;
$data=$xml->XMLin('sample.xml');
print Dumper($data);
$text=$data->{"text"};
$user=$data->{'hi'}->{'user'};
$iCount=@$user;
print "$iCount\n";
for($i=0;$i<$iCount;$i++)
{
$fullname=$user->[$i]->{'fullname'};
$hi=$user->[$i]->{'content'};
print "$fullname| $hi|\n";

}

使用Perl中的ref方法,可以判断一个引用是指向hash还是array。

if (ref($user) eq 'HASH') {
# $user 指向的是HASH
....

}

elsif (ref($user) eq 'ARRAY') {
# $user 指向的是数组
....

}

else {
....

}
温馨提示:内容为网友见解,仅供参考
第1个回答  2008-12-16
@array-数组
%array-散列
相似回答