Я обычно использую WWW :: Mechanize для подобных задач.Я также предпочитаю URI в том случае, если символ содержит специальные символы.
#!/usr/bin/perl
use warnings;
use strict;
use URI;
use WWW::Mechanize;
my $mech = 'WWW::Mechanize'->new;
my $uri = 'URI'->new('https://www.alphavantage.co/query');
my %params = (function => 'TIME_SERIES_DAILY_ADJUSTED',
outputsize => 'full',
apikey => '...',
datatype => 'csv');
while (my $symbol = <>) {
chomp $symbol;
my $url = $uri;
$url->query_form(%params, symbol => $symbol);
$mech->get($url);
$mech->save_content("$symbol.csv");
}
Возможно, вам потребуется заключить вызов get
в eval
и, возможно, повторить попытку несколько раз при неудаче.Кроме того, если вы действительно сделали свой ключ API общедоступным, рассмотрите возможность его изменения.