作者: 藤岡和夫
日時: 2006/4/29(07:01)
On Sat, 29 Apr 2006 02:00:10 +0900
"Bruce." <kbk@...> さんwrote:

> >> ところで、splitの引数なんですけど、\r\n|[\r\n] (順番が逆)にしないと
> >> 誤動作するような気がするんですが気のせい?
> > 
> >  これは、よくわからないけど。僕が使っているのはもっとラフで

 [\r\n]|\r\n

とすると、問題は、\r\nの並びでも、[\r\n]にマッチしてしまうからじゃないで
しょうか。左側からマッチを判定しますから、まず、 \r\nの並びを判定すべきで
すね。その並びにマッチしない場合には、Unixの\n単独とMacの\r単独のいずれ
かにマッチするかを判定する。明け方の夢の中に出てきた(^^;)

> > [ \t]*[\r\n]+[ \t]*
> > 
> > で、改行とついでに前後の空白文字を削除しています。
> 
> このパターンでsplitしているということですか?

 実際にしていることは、

$content =~ s/[ \t]*[\r\n]+[ \t]*//g;

のようにして削除してから、RSSの必要なタグの後に改行を挿入して解析するの
です。RSSのファイルは最初から改行が入っていない塊のファイルも多いのです
けど、改行の入り方だけでなく、encodingを含め、実に様々なファイルがありま
す。これは「実践実用Perl」ネタですが(^^)

> 空行には意味がないのですね。

 空行に意味がある場合もあるかもしれません。CDATAセクションには何がある
かわからないし、RSSのdescriptionの部分をどう整形して出力するかという問題
はあります。整形上、前後の空白文字を削除することには副作用があるかもしれ
ませんし、無駄かもしれない(^^;)まあ、実用上問題ない程度にできているとい
うことでしょう。現実はあまりにも複雑であらゆることを満足させることは結構
大変ですね(^^;)自分のスクリプトがどう動いているのかも混沌の中に見えなく
なったりして(^^;;;

藤岡 和夫
kazuf@...
TS Networkのために http://homepage1.nifty.com/kazuf/