use strict; use warnings; use DBD::SQLite; use HTTP::Tiny; # Test DB setup { my $dbh = DBI->connect('dbi:SQLite:dbname=/tmp/testdb','',''); $dbh->do('CREATE TABLE linktable (url TEXT NOT NULL, file VARCHAR(255) NOT NULL)'); $dbh->do('INSERT INTO linktable VALUES ("https://www.sec.gov/Archives/edgar/data/1897245/0001493152-23-024253.txt", "/tmp/edgar/0001493152-23-024253")'); } #--------------------------------------------# my $dbh = DBI->connect('dbi:SQLite:dbname=/tmp/testdb','',''); my $sql = 'SELECT url, file FROM linktable'; my $sth = $dbh->prepare($sql); $sth->execute or die "" . $dbh->errstr; my $ua = HTTP::Tiny->new( default_headers => { USER_AGENT => 'COMPANY email@email.com', }); while ( my $row = $sth->fetchrow_arrayref ) { my ($url, $file) = ($row->[0], $row->[1]); my $resp = $ua->mirror($url, $file); if ( $resp->{success} ) { print "OK\n"; } else { print "Failure: $resp->{status}, $resp->{reason}\n"; } } __END__