|
>秀丸ver.5.00β1の試用で、perlのヒアドキュメントに関しまして、
>問題点を指摘させていただきます。
>たとえば、
>
>print <<"aaa" if $OK;
>ああああ
>いいいい
>aaaa
>
>としますと、
>
>if $OK;
>
>の部分までヒアドキュメントと判定してしまいます。
>あくまで、次の行からがヒアドキュメントですので、
>
>ああああ
>いいいい
>
>だけをヒアドキュメントと判定すべきです。
後から気がついたのですが、これは上で書いたように単純に次の行から、ではありま
せんでした。
たとえば、後置のif(やらunlessやらandやらの)文を(その前や中で)改行した場
合、というのも考える必要があります。
たとえば、
print <<"aaa"
if ($OK or $OK2 or $OK3) and
($NG_SKIP or $NG_SKIP2);
あああ
いいい
aaa
というようなものです。
ですから、文の終わりの';'を判定して、その次からがヒアドキュメント、という判
定が必要になります。
一見、簡単そうですが、実は厄介な問題を含んでます。
たとえば、以下のようにif文内で文字定数や正規表現内で';'が使われると、判定が
とたんに難しくなります。
print <<"aaa"
if ($OK or $OK2 or $OK3 or $PARAMETER eq 'OK;1') and
($NG_SKIP or $NG_SKIP2) ;
あああ
いいい
aaa
この辺は、Perlコメント同様、あるところまでで妥協する必要がありそうですが、
どの辺までフォローすべきかは、意見を集めてみないとわからないですね。
私自身は、最低文字定数('', "", ``)だけは判定してやって、
あとは文字定数以外で';'がある行を見つけたら、
その次の行からヒアドキュメント、
くらいの妥協点がいいかと思います。
|
|