2007年02月14日 19:00 [Edit]
perl - LWPあれこれ
すでに多くの指摘があるとおり、GETはLWPの付属コマンドです。
jokagiは何年か前に偶然見つけたGETというコマンド(HEADもよく使う)を使用していますので,このコマンドの紹介と超簡単なハックをひとつ紹介したいと思います.
動作環境にインストールされているCPANパッケージの具合によってはhttpsが使えない(ぽい)
GETに限らずLWPでSSLを使うには、Crypt::SSLeayインストールすればOKです。
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><title>PAUSE: menu</title>
<link rel="shortcut icon" href="/pause/pause_favicon.jpg" type="image/jpeg" />
<link rel="stylesheet" type="text/css" href="/pause/pause.css" title="pause"/>
</head><body bgcolor="white" link="#0000CC" vlink="#0000BB"
alink="#FF0000" text="#000000"><table width="100%" border="0"
cellpadding="0" cellspacing="0"><tr><td valign="middle"><a href="authenquery"><img src="/pause/pause2.jpg"
border="0" alt="PAUSE Logo"
width="177" height="43" align="left" /></a></td><td nowrap="nowrap"><h4
Locationなどで別ページに飛ばせる処理はリダイレクト先の情報(コンテンツ)が出力される
こちらは-Sオプションをつけて実行するだけで表示されるようになります。
% GET -S http://www.dan.co.jp/~dankogai/nonexistent | head GET http://www.dan.co.jp/~dankogai/nonexistent --> 302 Found GET http://blog.livedoor.jp/dankogai/ --> 200 OK <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=euc-jp" /> <META name="verify-v1" content="Uxmj8tnJj+ZPANUvVbU+R32ms/SxLAWtslEspS7iqIE=" /> <link rel="shortcut icon" href="/dankogai/favicon.ico" /> <link rel="stylesheet" href="http://blog.livedoor.jp/dankogai/site.css" type="text/css" /> <link rel="alternate" type="application/rss+xml" title="RSS" href="http://blog.livedoor.jp/dankogai/index.rdf" /> <link rel="alternate" type="application/atom+xml" title="Atom" href="http://blog.livedoor.jp/dankogai/atom.xml" />odz buffer - GET と lwp-request
で、両方とも LWP インストール時にコマンドをインストールするかどうか聞いてくるのだが、lwp-request, lwp-mirror, lwp-rget, lwp-download はデフォルト yes、GET, HEAD, POST に関してはデフォルト no になっているので、何も考えずに ENTER を連打すると GET がないなんてことになったりする。
これ、実はOS X対策です。結構被害多いのですよ。
ひおにっき(2007-01-15)LWPのHEAD(1)でうわがきされちゃった><。なんでデスクトップOSは大文字小文字区別しないの〜;
このとおり、ひおさんクラスのPerl Hackerでも、OS Xのことを知ってないところっといってしまいます。
何が起きたかを解説すると、LWPはインストール時に各コマンドをperl本体と同じディレクトリーにインストールしようとします。perlが/usr/binにインストールされていたら、当然HEADも/usr/bin/HEAD。ところがOS XのデフォルトのファイルシステムであるHFS+では、ファイル名はcase insensitive。/usr/bin/headを上書きしちゃうわけです。
本当はLWPの方で、インストール先のHEADを見るのが一番いいのですが、作者のGisle Aasも忙しい人ですし、今のところちょっとtuitな解決法のままになっているわけです。
まあ解決法は沢山あるわけですが、一番いいのは、/usr/local/bin/perlをあらかじめ作成して、perl worldとdarwin worldを分けておく事でしょう。詳しい方法は、
あたりをご覧下さい。
あと、上書きしちゃった/usr/bin/headを元に戻す方法ですが、一番確実かつライセンス違反などもありえないのは、インストールディスクからコピーしてしまう方法でしょう。幸いにもインストーラーそのものが/usr/bin/headを必要とするらしく、パッケージを解凍したりする必要はありません。インストールディスクが/Volumes/Mac OS X Install Disc 1にマウントされているとして、
/bin/cp -p '/Volumes/Mac OS X Install Disc 1/usr/bin/head' /usr/bin
でOKのはずです。
Dan the Frequent User Thereof
この記事へのトラックバックURL
ありがとうございました。
Dan the Typo Generator
今度こそ直ってると思います。ありがとうございました。
Dan the Typo Generator
今見たのですが、一応閉じてました。どうしてだろ。
念のため再構築かけておきました。
Dan the Typo Regenerator