[英]How to access data on Perl Object structures
我有以下 perl 代碼,其中我有一個 perl 結構如下:`
use Data::Dumper;
my %data = (
'status' => 200,
'message' => '',
'response' => {
'name' => 'John Smith',
'id' => '1abc579',
'ibge' => '3304557',
'uf' => 'XY',
'status' => bless( do{\(my $o = 1)}, 'JSON::PP::Boolean' )
}
);
my $resp = $data{'status'};
print "Response is $resp \n";
print Dumper(%data->{'response'});
讓狀態字段有效,但是如果我嘗試這樣的事情: my $resp = $data{'response'}
我得到的響應是 HASH(0x8b6640)
所以我想知道是否有一種方法可以像提取“狀態”一樣提取“響應”字段的所有數據,而無需獲取 HASH...
我在訪問數據時嘗試了各種組合,但是當我嘗試獲取“響應”的內容時,我仍然得到 HASH
$data{'response'}
是訪問 hash 上名為%data
的該字段的正確方法。 它返回一個 hash 引用,默認情況下以您看到的(相對無用的) HASH(0x8b6640)
語法打印出來。 但是,如果您將該引用傳遞給Dumper
,它會向您顯示所有內容。
print Dumper($data{'response'});
要實際訪問這些子字段,您需要取消引用,這是通過間接->
操作完成的。
print $data{'response'}->{'name'}
第一次訪問不需要->
因為您正在訪問 hash變量(即帶有%
標記的變量)上的字段。 第二個是因為你取消引用了一個引用,至少在精神上,它像其他標量一樣具有$
印記。
感謝您的帖子。 我將代碼固定如下:
use Data::Dumper;
my %data = (
'status' => 200,
'message' => '',
'response' => {
'name' => 'John Smith',
'id' => '1abc579',
'ibge' => '3304557',
'uf' => 'XY',
'status' => bless( do{\(my $o = 1)}, 'JSON::PP::Boolean' )
}
);
my $resp = $data{'response'};
print Dumper($resp);
現在它就像一個魅力,我能夠得到我想要的數據。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.