読者です 読者をやめる 読者になる 読者になる

稲沢市よりお届けしてます。

Perlをはじめとしたプログラミング周りのあれこれについて。Perl界のモブキャラとして暗躍します(謎)。

胸キュンなPerlコードを下心でスパイシーにしてみた。

こんばんは、Perl48です。


自分がPerlのブログを書き始めるようになってから、
他の方のPerlブログもよく読むようになりました。


書店のWEBプログラミングコーナーなんかに行くと、
RubyやらPHPやらAJAXやらの解説本がドーンと並んでいて、
Perlだけなんだか今だに「Perl/CGI」みたいなくくりでカテゴライズされていて、

Perl推しの私としても

「うーん、Perlは枯れた技術なのかなぁ・・・」

なんて自信を無くしてしまいそうになります。


が、


そんな時、まだホットなPerlプログラマーのブログを読むと「まだまだPerlも捨てたもんじゃないぜ!」なんて元気と知識をいただいたりします。


数あるPerlブログの中で良質なだけでなく、実用的でかつエントリータイトルにマーケティング的なセンスも感じたエントリーがありました。

Perl が覚えられて胸もキュンとなるコードを書いてみた

です。


Web::Scraperモジュールはインストール済みなので、早速コードを拝借して動かしてみる。


フォルダに次々とダウンロードされていく画像を見て、肌で強烈にIT革命(死語)を感じました。



で、動かし方がわかると自分のニーズに合わせてカスタマイズしてみたくなるのがPerl48の性でして、試しにやってみました。

やりたいことは、

【複数のURLを一気に指定して、各URLに存在するjpgファイルを根こそぎダウンロードする。】

ということです。欲しいjpgファイルの内容については内緒です(笑)

#! /usr/bin/perl

use strict;
use warnings;

use Web::Scraper;
use URI;
use LWP::Simple qw/mirror/;
use File::Basename qw/basename/;

open (ELO, "./elo.txt");

while (<ELO>){
# URLリストを読み込む
my $url = URI->new($_);

# 基本的には、おいちゃんさんのコードを踏襲します
my $scraper = scraper {
    process 'a[href=~/\.jpe?g$/]', 'urls[]' => '@href';

    # result でキー名を指定しておくと、ハッシュではなくそのものが返ってくる
    result 'urls';
};

# リファレンスには _ref サフィックスを付けておきます
my $results_ref = $scraper->scrape($url);

foreach my $link (@{$results_ref}) {
    my $filename = basename($link);

    # あらかじめ「Elo」フォルダを作っておく
    mirror($link, './Elo/' .$filename);

    # サーバに負荷をかけすぎないように
    sleep 1;
};

};

print "ダウンロードが完了しました\n";

ご覧の通り、
『複数のURLを一気に指定』という部分を
テキストファイルに1行ごとにURLを貼り付けておき、
そのテキストファイル(本プログラムでは'elo.txt')を
読み込むという形で実装。

他は、彼女からは、おいちゃんと呼ばれてるさんのソースを
拝借しています。


フォルダにエロ画像が溜まっていく様子を見て悦に入るのですが、
実際の所、全部見るのめちゃ大変(汗)


下心というエンジンで動かしたPerlスクリプトだったけど
最後の最後に「人間とコンピューターの違い」みたいなのを感じてしまいました。

画像1万枚あっても、見て高まるのはパソコンには任せられないもんなー。


あー、Perlって最高!!




外壁塗層 京都 洗顔パウダー 通販