簡體   English   中英

如何訪問 Perl Object 結構上的數據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM