> 2000/11/03 (金) 16:15:50 ◆ ▼ ◇ [mirai]> > ,には\つける必要ないよ。
> > /に\付ける理由は(正規表現を挟む物をデリミタっていうんだけど)
> > つけないと、デリミタを区別が付かないから。
> > デリミタを変更することが出来て、その時はmをつける。
> > 嘘だな(;´Д`)
> > //がm//の略記っていった方が正確なのかなぁ。
> > #にしたときには\#としないとダメ。
> > さっき出てた s/http:\/\/// とか分かりづらくなるときに
> > s#http://##と出来て、わかりやすい。
> > つかこういうことっすね
> > foreach (@DATA) {
> > s#(http://[^/]+)(?:/[^/]+){2}(/.*)#$1$2#;
> > }
> > print "Content-type: text/html\n\n";
> > print map { $_.'<br>' } @DATA;
> > 正規表現使っちゃってるけど・・・
> 長文サンクスコなんだが
> これはかなり理解出来ない
> 例えばこの場合だと
> @value = split(/\//,$line);
> @value = split(#/#,$line);
> のように置き換えることが可能っていうことかい?
> リンゴとみかんで頼む
再び『初めてのPerl』から引用。
多数のスラッシュを含むようなパターンでは、\を挿入する手間もバカになりません。
そこでPerlではスラッシュ以外の文字もデリミタとして使うことが
出来るようになっています。それにはmの直後にアルファベット以外の任意の
文字を置き、その次にパターンを書いて、最後に同じデリミタをもう一つ置くだけです。
たとえば次のようにします。
/^\/usr\/etc/ # 標準ではスラッシュがデリミタになる
m@^/usr/etc/ # '@'をデリミタにする
m#^/usr/etc/ # '#'をデリミタにする
あえてやりたいのなら、スラッシュを使ってm/abc/と書くことも可能です。
実は普通のマッチ演算子の正体はm演算子で、デリミタにスラッシュを使うときに限って
mを省略できるのです。
わかったかい?童貞ボーイ。
最後のforeachからは、俺ならこう書くってだけで・・・説明いる?
参考:2000/11/03(金)16時00分22秒