アドアチーブ株式会社

アドアチーブ株式会社 オフィシャルブログ

2006.12.05修飾子「o」

毎度です。

タバコをやめてみようかな。

と思い、フリスクを購入して食べすぎ、

おなかが少々痛くなっております。

アドの制作部のものです。

難しいですよね。制作が禁煙って。

制作の場合、吸殻の多さは、仕事量に比例する

なんて誰かが言ってました。

もちろん正当化するわけではないですが。

最近またperlを使ってごにょごにょやっているのですが、

ここ最近ずっと悩んでおりました。

htmlのテンプレート作って、読み込んで、特定の文字列だけ置き換える

というアレです。

特定の文字を配列に入れておいて、

foreachでまわして、変えていく、っていう寸法だったのですが、

なぜか正規表現が効かない。

いや、知らなかっただけなんですが。

foreach(@hoge){

本文 =~ s/$_//og;

}

と書いておりまして、消えないな〜。なんで?

とずっと考えていたんです。

修飾子「o」って変数の展開を一度だけする。

って意味ですよね?

で、$_を展開しないと。って思って

「o」を付けた訳ですよ。

そこでずーーーーーーっと大ハマリです。

いまだ正確に理解しているのか、かなり危うい気がしますが、

どうやら「一度だけ展開」っていうのの

「一度」の方が重要だったみたいで。

ループ2回目以降は展開してくれないみたい。

いや、知ってる人は笑うでしょうけど、、

知らない人の思い込みって恐ろしいです。ホント。

なかなか禁煙も進まないわけですよ。

「o」とったら思惑通りに動きました。

正規表現に関してはもっと知識が欲しいとつくづく思う

今日この頃でした。。。ほんとに。

で、この「o」はどこまで有効なんでしょうね?

サブルーチンの中で書いても、ライブラリの中で書いても

実行中1回だけ展開

っていうことなんでしょうか?

展開されなかったら文字列扱いなのかな?

いや、ちゃんと実験して試すべきなんでしょうけど、

どうゆう時に使うのか、いまいちピンときません。。

perl大好きなプログラマの方に

セールストークのようにお話を聞いてみたいです。

この記事へのトラックバック

トラックバックURL:  http://www.adachieve.com/~mt/mt334/mt-tb.cgi/777


この記事へのコメント


名前:
E-mail:
URL:
  情報を記憶: