use JSON::Tiny; use Data::Dump; my $data = from-json("/home/melezhik/projects/terraform/examples/aws/terraform.tfstate".IO.slurp); my $backend-ip; my $database-ip; my @aws-instances = $data<>.grep({ . eq "aws_instance" }).map({ if .[0] eq "backend" { $backend-ip = .[0] } if .[0] eq "database" { $database-ip = .[0] } %( host => .[0], tags => "{.[0]},name={.[0]},aws,ip={.[0]}" ) }); for @aws-instances -> $i { $i ~= ",backend_ip={$backend-ip}"; $i ~= ",database_ip={$database-ip}" } say Dump(@aws-instances); @aws-instances;