sub main { if ($mode ne 'EDIT') { return; } # Receive an array reference my $countries = _getData(); if ( 0 == scalar @$countries ) { return ""; } my $html = ""; # $#{$countries} is last index of array reference $countries for (my $i = 0 ; $i <= $#{$countries} ; $i++) { if (defined $countries->[$i]->{"id"}) { # option selection will be automatically set by Imperia $html .= sprintf( '', $countries->[$i]->{"id"}, encode_utf8($countries->[$i]->{"label"}), ); } } return $html; } sub _getData { my $url = sprintf( "%s%s", $ENV{'API_BASE_URL'}, "/ajax/imperia/countrylist/de" ); my $ua = LWP::UserAgent->new(ssl_opts => { verify_hostname => 1 }); my $header = HTTP::Request->new(GET => $url); my $request = HTTP::Request->new('GET', $url, $header); my $response = $ua->request($request); if (!$response || $response->is_error || !$response->is_success) { return; } my $response = decode_json($response->content); return $response->{"countries"}; }