Perlのクォートの判定についてNo.24762
あきら@PSL さん 08/04/14 11:06
 
こんにちは。いつも便利に使わせていただいております。
私はもっぱらPerlのコードを書くのに使っていますが、qq//演算子(ダブルクォート
の一般形)の終端判定で、両端に使われている文字が囲んだ間に使われているケース
でおかしくなってしまうようです。もし改善されるようですと大変ありがたいです。

qq{<option value="$f->{id}" $selected>\n}; # qq{}の内部に""があるとき
qq{<option value=$f->{id} $selected>\n}; # $f->{id}の}が終端とみなされてしまう
qw(asis euc sjis() utf8) # qw()の内部で()自身が使われているとき

よろしくお願いします。

[ ]
RE:24762 Perlのクォートの判定についてNo.24763
秀丸担当 さん 08/04/14 12:02
 

>こんにちは。いつも便利に使わせていただいております。
>私はもっぱらPerlのコードを書くのに使っていますが、qq//演算子(ダブルクォート
>の一般形)の終端判定で、両端に使われている文字が囲んだ間に使われているケース
>でおかしくなってしまうようです。もし改善されるようですと大変ありがたいです。
>
>qq{<option value="$f->{id}" $selected>\n}; # qq{}の内部に""があるとき
>qq{<option value=$f->{id} $selected>\n}; # $f->{id}の}が終端とみなされてしま
>う
>qw(asis euc sjis() utf8) # qw()の内部で()自身が使われているとき

そういった書き方もあるのですか。
いまのところ、こういう書き方に対応することはできないです。

現状で回避するには、[その他]→[ファイルタイプ別の設定]→[デザイン]→[複
数行コメント]→[Perl]で「文字列を認識」をOFFにして認識しないようにするし
かないです。
Perlの文法は完全にするときりがなく、ある程度妥協した判断になっていて、そ
のためにこういった回避オプションがあります。スラッシュの判断も、割り算か
正規表現文字列かは適当に判断されていたりします。
ユーザー定義で正規表現で書くこともできますが、ここまでの判断は正規表現で
は難しいと思います。

または、ソースがご自身で書かれているものであれば、qqやqwで使用する記号は
任意にできると思うので、使っていない文字を使えば回避できると思います。
たぶん、任意の記号にできるのは文字列内で使いたい文字を避けるためにある文
法だと思います。
ご自身で書かれているものではなく他の方のソースを見ているということであれ
ば回避にならないですが。

ここまで対応できるかどうかはわからないですが、将来バージョンのネタとして
参考にさせていただきます。

[ ]
RE:24763 Perlのクォートの判定についてNo.24764
あきら@PSL さん 08/04/14 15:01
 
回答ありがとうございます。
それならば仕方ありません。文字列に使用していない文字を使うようこちらで気をつ
けて運用します(クォートやhereドキュメントの色分けはとてもわかりやすいので助
かっています)。

[ ]