Perlでwgetで四苦八苦

Perlのプログラムではまった。二度と繰り返したくないので個人的に記録にとどめておきたいと思う。

まず実装したかったのは(しなければならなかったのは)htmlファイルのソースを読み込んで正規表現で置換したのち、別ディレクトリのファイルにはき出す、というものだ。

まず、最初はRubyでHpricotなんかを使って作った。これにはさほどはまらなかったように思う。だが、先方の理由により、Rubyは使えないということでボツ。

次にPerlで、となるのだが、これもRuby同様にWeb::Scraperなんかを使ってパースかけて処理しようと企むが、機能が実現した後、正規表現の方がよいとわかって一回ボツ。


シンプルにLWP::Simpleを使ってurl指定した先のソースを変数に格納して処理したのだが、これまた先方の「モジュールいれられない」との理由でボツ。LWP使わないでどうやってすんの?とか思ったが、Perlからwget呼び出して処理するとのこと。ググってみたが、みんな標準的にLWPよなー。


そんなわけで最終的にPerlwget正規表現で実装することに。

まず、ファイルの読み込みに躓いた。wgetのコマンドにも不慣れで四苦八苦。スクリプトとは別のディレクトリに保存したかったので-Pで指定して、さらに順次上書きしたかったので-Oで。こんな感じ。

wget $url -P $dir -O $dir/$file

いったん、wgetで落としてきたファイルに対してopenを使ってファイルの入出力をするのだけど、ここでもまたハマッタ。最終的には一時ファイルを用意して、中身を移しかえていくような処理にしてなんとか解決した。

ひさびさに四苦八苦したが、非常に勉強になった。もう似非は卒業してばりばりコーディングできるようになりたい。