2014-06-19 2 views
0

JSON::Parse을 사용하여 json 파일을 디코딩했습니다. 파일에 덤프하면 아래와 같이 보입니다. 각 리포지토리에서 'url'을 추출해야합니다. 어떻게 그 일을 할 수 있습니까? 나는 요소에 접근하려고 시도했으나 얻을 수없는 것처럼 보였다. 어떤 제안?perl에서 복잡한 해시 참조를 구문 분석하는 방법은 무엇입니까?

my $json_hash_ref = {}; 
$json_hash_ref= json_file_to_perl ($REPO_JSON_FILE) or confess "No repos found"; 

이 데이터 덤프는 다음과 같습니다 : 나는 .json 파일 디코딩 방법

깊은 데이터 구조를 횡단에

$VAR1 = { 
     'repositories' => [ 
         { 
          'size' => 2970, 
          'watchers' => 49, 
          'created_at' => '2012-03-20T05:04:42Z', 
          'url' => 'http://github.cerner.com/aeon-core/aeon-topology', 
          'open_issues' => 0, 
          'followers' => 49, 
          'owner' => 'aeon-core', 
          'has_downloads' => 1, 
          'has_issues' => 0, 
          'language' => 'Java', 
          'pushed' => '2014-06-17T18:32:37Z', 
          'private' => ${\$VAR1->{'repositories'}[0]{'has_issues'}}, 
          'name' => 'aeon-topology', 
          'score' => '1', 
          'has_wiki' => ${\$VAR1->{'repositories'}[0]{'has_issues'}}, 
          'pushed_at' => '2014-06-17T18:32:37Z', 
          'description' => '', 
          'username' => 'aeon-core', 
          'created' => '2012-03-20T05:04:42Z', 
          'homepage' => '', 
          'forks' => 59, 
          'fork' => ${\$VAR1->{'repositories'}[0]{'has_issues'}}, 
          'type' => 'repo' 
         }, 
         { 
         ..... 
         },... 

답변

2
my @urls = map $_->{url}, @{ $json_hash_ref->{repositories} }; 

좋은 정보를의 perl references tutorial를 참조하십시오.

+0

고마워요! 문서가 솔루션을 설명하는 데 도움이되었습니다. 나는 참조뿐만 아니라 대답을 주셔서 감사합니다. – Busch