Perl Tips #1
べーたんのPerl Tips第一回目
初回はベーシックにオートリンクのコードから。
掲示板などでURLと思われる文字列を自動的にリンクにするというやつ。
たいていのオートリンクではアンカー(http://〜/index.html#aaa←こんなふうなURLの最後の#〜がアンカー)に日本語が入っているとうまくリンクできないので、
その辺を改良したコードを紹介します。
リファレンスを使っているので初心者の人にはキツイとおもいますが、
まあ汎用性高いのでこのままコピペすればそのまますぐ使えると思います。
これだけで普通のURLはもちろん、
アンカーに日本語が入っていてもオートリンクされます。
たとえば、
http://berta.s27.xrea.com/cgi-bin/blog/index.html#アンカー
といったものにもリンクが張られます。
コードの意味を詳しく知りたい人は、
正規表現
リファレンス
無名サブルーチン
このあたりの語句でググって下さい。
初回はベーシックにオートリンクのコードから。
掲示板などでURLと思われる文字列を自動的にリンクにするというやつ。
たいていのオートリンクではアンカー(http://〜/index.html#aaa←こんなふうなURLの最後の#〜がアンカー)に日本語が入っているとうまくリンクできないので、
その辺を改良したコードを紹介します。
sub AutoLink{
my $value = $_[0];
my $auto_link_f = sub{
if($_[1]){return qq|<a href="$_[0]$_[1]$_[2]" target="_blank">$_[0]$_[1]$_[2]</a>|;}
else{return qq|<a href="$_[0]" target="_blank">$_[0]</a>$_[2]|;}
};
$value =~ s/(http\:\/\/[\w\.\~\-\/\?\&\+\=\:\@\%\;\|\*\,\^\!\\]+)(\#?)([^\ \ \<]*)/$auto_link_f->($1,$2,$3)/eg;
return $value;
}
リファレンスを使っているので初心者の人にはキツイとおもいますが、
まあ汎用性高いのでこのままコピペすればそのまますぐ使えると思います。
$comment = &AutoLink($comment);
これだけで普通のURLはもちろん、
アンカーに日本語が入っていてもオートリンクされます。
たとえば、
http://berta.s27.xrea.com/cgi-bin/blog/index.html#アンカー
といったものにもリンクが張られます。
コードの意味を詳しく知りたい人は、
正規表現
リファレンス
無名サブルーチン
このあたりの語句でググって下さい。
Comments