urlをhttp://から始まるものに直すには?

[上に] [前に] [次に]
babyA [E-Mail] 1998/09/02(水) 21:15:15
perl の cgi での話です。
urlを複数含む文字列があってその url 全てを http:// から始まる形式に
直したいのですがどうするのが簡潔で良い方法なのでしょうか?
url は "index.html","./aaa.html","/bbb.html","http://aaa/bbb/"
などいろいろな形式で文字列に含まれています。なお url の
ホスト名とパスは予めわかっています。

mo [E-Mail] 1998/09/03(木) 10:41:12
$url =~ s,^(?!http://)/*,http://$host/,;
とか、配列を一喝処理したいなら
s,^(?!http://)/*,http://$host/, for(@url); # 最新の perl の文法だよん。
なんてのはどうでしょう。
なお、(?!regex) は perl5 で利用できる拡張形式で、
正規表現 regex にマッチしなければ真となります。


babyA 1998/09/03(木) 11:55:02
すみません、説明が足りなかったようです。
具体的に言うと文字列の中身は html ファイルを読んだものが入っています。
その中に href="aaa.html" や src="/bbb.gif" などの様に url がいくつか含まれています。
この url 部分を見つけて http:// から始まるように変換したいのですがうまい方法がわかりません。

satoshi [HomePage] 1998/09/03(木) 12:44:58
http://www2.pos.to/~negi/public/httpmail.pl.txt
のget_linkサブルーチンが参考になるでしょう。

似たプログラムは内外に沢山あります。まずは他人の同種の
プログラムを読んでみることです。
(でも私はこの部分に関しては独自に書いた。というより、
その時手もとにあったあるものと同じにならないように敢え
て違ったアプローチで書いた。)

[上に] [前に] [次に]