Namazu-devel-ja(旧)


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: filter/macbinary.pl試用結果



佐久間です.

ワーニングは,多分mknmzの-wスイッチのせいだと思います.$6がセットされない状
態で,それを参照しようとしているためです.(なんか矛盾しているようなワーニン
グですが)

    $$contref =~ s!</?(?:([A-Z]\w*):|(\!)\[.*?\]).*?>!element_space($1 || 
$2)!gsixe;


でどうでしょうか.でも$1が無い時ワーニングしそうですし....
Perlの正規表現の後方参照は,何個目の"("でマッチが開始されたかの数字です.
いろいろな下記が考えられるのですが,速度も含めて考えると,後方参照はいらない
ところは除いた方が好ましいです.
# "(?:" で始まる括弧は後方参照されません



> 寺西です。
> 
> Tadamasa Teranishi wrote:
> > 
> > "Sakuma,Hiroaki" wrote:
> > >
> > > > ただ、この場合 $6 が設定されない場合(たぶん)に
> > > >
> > > > Use of uninitialized value in concatenation (.) or string at
> > > > /usr/local/share/na
> > > > mazu/filter/html.pl line 313.
> > > >
> > > > とワーニングがでてしまうのが厄介です。
> > >
> > > この問題だけを解決するなら,
> > >
> > > element_space("$2$6")
> > >
> > > でワーニングは出ません.
> > 
> > $2 もマッチしないことがあるようで、まだ出ますね。
> > # それとも、何か勘違いしているかもしれませんが。うーむ。
> 
> Perl は詳しくないのでよくわらないのですが、
> やっぱり参照するのでワーニングがでるようです。
> (しかも $6 じゃなくて $4 でした。)
> 
> $$contref =~
> s!</?(([A-Z]\w*):*\w*(?:\s+[A-Z]\w*(?:\s*=\s*(?:(["']).*?\2|[\w\-.]+))?)*|(
> \!)\[[^>]*\])\s*>!if
> (defined $2) { element_space($2); } else { element_space($4); }!gsixe;
> 
> とすればとりあえず大丈夫そうです。
> # なんか泥臭いけど。
> 
> ちなみに分ける場合は、以下のものを remove all elements に入れれば
> 良いようです。(本質的にはどちらも同じです。当たり前だが。)
> 
>     # remove Office Markup <o:></o:>, <![]>
>     $$contref =~ s!</?([A-Z]\w*):.*?>|<(\!)\[.*?\]\s*>!if (defined $1) {
> element_space($1); } else { element_space($2); }!gsixe;
> 
> # 簡単なテストはしましたが、合っているかどうかは自身なし。



=== Sakuma,Hiroaki =======================================================
BEETAS.org          www.beetas.org      sakuma@xxxxxxxxxx
Webmin-JP           jp.webmin.com       sakuma@xxxxxxxxxxxxx
Waseda Univ CS                          sakuma@xxxxxxxxxxxxxxx
=== "There's More Than One Way To Do It" =================================