私は池上が提案した変更のほとんどを適用しました。その後、perl は残りの問題を修正するための適切なエラー メッセージを表示してくれました。今はうまくいっているようです。以前はうまくいかなかった理由を尋ねないでください。あなたのコードは奇妙で、正確に何が間違っていたのかを言うのは難しい. strict と warnings を使用すると、より良いコードを書く必要があります。わかりやすくするために、適切な名前のサブルーチンをいくつか追加することもできます。
#!/usr/bin/perl
use strict;
use warnings;
use IO::Socket;
use LWP::UserAgent;
use open qw(:std :utf8);
use LWP::Simple;
use YAML::Tiny;
use JSON;
use URI;
use List::MoreUtils qw(uniq);
print "Enter Qve:";
my ( $qve, $loc, $key, $href );
chomp( $qve = <STDIN> );
print "Enter Location:";
chomp( $loc = <STDIN> );
$key = '';
my $format = '$format';
$href =
"https://api.datamarket.azure.com/Bing/Search/v1/Web?Query='$qve [loc:$loc]'&Latitude=43&Longitude=19&$format=JSON";
my $ua = LWP::UserAgent->new('keep_alive');
$ua->credentials( "api.datamarket.azure.com" . ':443', '', '', $key );
my $resp = $ua->get($href);
my $data = decode_json( $resp->decoded_content( charset => 'none' ) );
my @urls = map { $_->{'Url'} } @{ $data->{d}->{results} };
my @za;
for my $i ( 0 .. $#urls ) {
my $trz = "www.";
my $host = URI->new( $urls[$i] )->host;
$host =~ s/$trz//g;
push( @za, $host );
}