[kansaipm] Re: DocBook
mishima at momo.so-net.ne.jp
mishima at momo.so-net.ne.jp
Sat Oct 7 07:04:49 CDT 2000
三嶋です。こんにちは。
> むとう@おうちです.いま好き好きDocBook病にかかっています.
>
> で,こんな嫌んなコードがあるんですけど,皆さんならどうします?
> # 論理構造を記述するためには使ってはいけない
> s#\\begin\{center\}##g;
> s#\\end\{center\}##g;
> s#\\begin\{frameenv\}##g;
> s#\\end\{frameenv\}##g;
> s#\\begin\{minipage\}##g;
> s#\\end\{minipage\}##g;
DocBook てのがどういうのか、よくわからないんですが、
要するにバックスラッシュがやだってことなんですよね。
(If a curly bracket occurs in any other context, it is treated as a
regular character.) The "*" modifier is equivalent to `{0,}', the "+"
...
と、perldoc perlop に書いてありますので、まず{}の前の\は取りましょう。
# (1)
s#\\begin{center}##g;
s#\\end{center}##g;
s#\\begin{frameenv}##g;
s#\\end{frameenv}##g;
s#\\begin{minipage}##g;
s#\\end{minipage}##g;
ちょっとマシになりました。
取り除くべきパターンが、ホントにこの6個だけなら、
1行にまとめて書けそうです。
まとめたほうが、少しは速いかな?
# (2)
s#\\(begin|end){(center|frameenv|minipage)}##g;
但し、(...)を使うと$1や$2に値がセットされるため、些細なオーバーヘッドが
あります。(?:...)を使えば、ほんの少し読みにくくなりますが、そのオーバー
ヘッドがなくなる分、ほんの少し速くなるかもしれません。
# (3)
s#\\(?:begin|end){(?:center|frameenv|minipage)}##g;
あとは、/x のオプションを使って、正規表現の途中に改行やコメントなどを
入れる手もあります(その場合、区切り文字は # 以外にするように)。
しかし、結局この程度のものなら、(1)で止めとくのが一番いいかな。(^^)
--
$p='Perl'; $_='Masahiro Mishima'; sub _{pack'c*',$x=110+ at _*5,$x+1}
tr/oma/fa_/;s/./chr(ord($&)+2)/ge;@x=(sort(grep{!$_{$_}++}split//),
$p=~/(.(..).)/);$x[7]=~s/^/_/e;$x[8].=_ 1;for(@w=(47,1639,8,31259))
{s/\d/$x[$&+1]/g} print ucfirst "@w.\n";
More information about the Kansai-pm
mailing list