blosxom.cgiをいじくりながらPerlのお勉強をしてるですよ?(∵)ノ
$path_info =~ s!(^/*)|(/*$)!!g;
いわゆる文字列の置換なんだけど、$path_infoの先頭と末尾に/(スラッシュ)があったら
前後のスラッシュのみを無くす、という処理であってるかな?、、、かな?
真ん中が||(比較演算子)じゃなくて|(ビット演算子)なのはなぜかなーとか思ったんだけど、もしかすると
$path_info =~ s!(^/*)||(/*$)!!g;
とかの場合、左辺が真の場合は右辺を評価しないので、先頭にスラッシュがあれば末尾のスラッシュは無視される、のかな?
一方、真ん中が棒いっぽんの場合はビット単位で両辺を比較してどちらかが1(つまり真)である部分を返す、ということは、
マッチした先頭と末尾のスラッシュがまとめて置換されて
/path_info/ → path_info
ということになるのだろうか??
誰かおしえてーー┌| ∵|┘
んとですね、結局どういうことかというと、つまりこのHPの最下部に「RSS」へのリンクがあるわけですよ、
RSSとは言わずもがななんかRSSリーダーとかで読み取ったりして更新をチェックしたり、はたまたmixiと連携したりするシロモノです、
このRSSのURL、実はblosxomのプログラムを利用して
$url/index.rss
などと当初は書いておったのです、こうするとプログラムの変数が出力されて
http://iso.tank.jp/index.rss
となるわけですよ?、
最初はコレで満足しておったわけですが、なんかカテゴリ毎のRSSも出力できるとかできないとかいうことに気づいてしまいました、
つまりhttp://iso.tank.jp/game/moe/index.rssへリンクするとMoEに関する記事のみ購読できるようになったり
http://iso.tank.jp/blosxom/index.rssだとblosxomに関する記事のみ読み取れたりするのです!、
ウオオコリャスゲエエェってことで早速rssを吐き出す部分を下記のように書き換えてみたところ、
$url$path_info/index.rss
=> http://iso.tank.jp/blogblosxom/index.rss(URLの「blog」とカテゴリ名がくっつく)
$url/$path_info/index.rss
=> http://iso.tank.jp/blog//index.rss(メインページのRSSのスラッシュが二重になる)
つまり、我ダサスギ也ということでございます
解決方法は実は色々いっぱいあるのです、例えば記事ディレクトリ直下のフレーバー(テンプレート)には「$url/index.rss」って書いて、
さらに各カテゴリのディレクトリにもフレーバーを作ってそこには「$url/$path_info/index.rss」とでも書いてちゃって、さらにさらに個別記事用のフレーバーには
「$url/$path/index.rss」とでも書いておけばそこはかとなく解決する代物だし、もしくはblosxom.cgi本体を直接いじっちゃって$path_infoの左端に/(スラッシュ)
を入れた関数でもでっちあげちゃえば別にそれで完成なんじゃない? とか、とか、
しかしなんか色んなことをボヘーっと考えながら昼休み中blosxom.cgiを見つめていたら、
いつのまにか変なモノができあがった
あれ、これプラグイン? のようなモノ、え?なに?初めてプラグインらしきものができあがっちゃいましたよ?
ていうかいいのかコレ?
ウーン、、、勢いで作っちゃったけど、素直にフレーバーで対応したほうがいいような気がする、、、└|∵ |┐