2006.12.05修飾子「o」
毎度です。
タバコをやめてみようかな。
と思い、フリスクを購入して食べすぎ、
おなかが少々痛くなっております。
アドの制作部のものです。
難しいですよね。制作が禁煙って。
制作の場合、吸殻の多さは、仕事量に比例する
なんて誰かが言ってました。
もちろん正当化するわけではないですが。
最近またperlを使ってごにょごにょやっているのですが、
ここ最近ずっと悩んでおりました。
htmlのテンプレート作って、読み込んで、特定の文字列だけ置き換える
というアレです。
特定の文字を配列に入れておいて、
foreachでまわして、変えていく、っていう寸法だったのですが、
なぜか正規表現が効かない。
いや、知らなかっただけなんですが。
foreach(@hoge){
本文 =~ s/$_//og;
}
と書いておりまして、消えないな〜。なんで?
とずっと考えていたんです。
修飾子「o」って変数の展開を一度だけする。
って意味ですよね?
で、$_を展開しないと。って思って
「o」を付けた訳ですよ。
そこでずーーーーーーっと大ハマリです。
いまだ正確に理解しているのか、かなり危うい気がしますが、
どうやら「一度だけ展開」っていうのの
「一度」の方が重要だったみたいで。
ループ2回目以降は展開してくれないみたい。
いや、知ってる人は笑うでしょうけど、、
知らない人の思い込みって恐ろしいです。ホント。
なかなか禁煙も進まないわけですよ。
「o」とったら思惑通りに動きました。
正規表現に関してはもっと知識が欲しいとつくづく思う
今日この頃でした。。。ほんとに。
で、この「o」はどこまで有効なんでしょうね?
サブルーチンの中で書いても、ライブラリの中で書いても
実行中1回だけ展開
っていうことなんでしょうか?
展開されなかったら文字列扱いなのかな?
いや、ちゃんと実験して試すべきなんでしょうけど、
どうゆう時に使うのか、いまいちピンときません。。
perl大好きなプログラマの方に
セールストークのようにお話を聞いてみたいです。

