work.log

元エンジニアの備忘録的ブログ

PerlのLWPでファイルをダウンロード

投稿:

Perl モジュール LWP を使ってファイルをダウンロードするメモです。

スクリプトを書くなかでファイルをダウンロードしたくなる事があるので LWP::UserAgent を使って書いてみました。

#!/usr/bin/perl

use strict;
use warnings;
use LWP::UserAgent;

    my $url     = 'https://worklog.be/file.zip';
    my $file    = '/tmp/file.zip';
    my $ua      = 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)';
    my $timeout = '10';

    my $lwp = LWP::UserAgent->new( agent => $ua, timeout => $timeout );

    ## コンテンツの取得
    my $res = $lwp->get( $url, ':content_file' => $file );

    ## ダウンロード成功時
    if ( $res->is_success ) {

        print "success\n";

    ## ダウンロード失敗時
    } else {

        print "error\n";

    }

exit;

ちなみに、LWP を使わずに wget コマンドでやろうとするとこんな感じ。

my $url  = 'https://worklog.be/file.zip';
my $file = '/tmp/file.zip';

`/usr/local/bin/wget -O $file $url`;

エラー処理はいれてないですがシンプルだし、動作的にもこっちのほうが早いと思います。

でも、モジュールの使い方を一度覚えると、以降はわざわざモジュールを介して処理させたくなるのが Perl の不思議な所です。