IT Office Nishimiyahara

個人用スマホから商用プログラミングまでなんでもお任せ下さい

新型引用符

      2015/02/04

ふとしたきっかけで知ったのだけども、perlには新型引用符(?)があるらしい。なかなか面白いことを考えてくれる。

「新型引用符」というのは「()」に機能を付け加えたもののようで、「q(?)」と書くと「'?'」に、「qq(?)」と書くと「"?"」になるらしい。「q()」の中では「'」をエスケープする必要が無い。同じように「qq()」の中では「"」が文字として有効になる。

perlの「命令」というか「文法」がいまいち見えてこないけど、「q[?]」や「q/?/」でも大丈夫らしい。でも、何故一度に沢山の記号を使えるようにするのか。例えば、「qq(?)」と「qq[?]」で記号の扱い方を変えるとかすれば、もっと機能的になるのに・・・。いや、ホントは機能が違うのかもしれないけど・・・。

やはり不思議なのだが、「q(?)」の中では「()」が、「q[?]」の中では「[]」が使える。ただし、組数は等しくし、開いて閉じなければならない。どちらにしろ、エスケープは出来るので紛らわしいことはやめたほうがよさそうだ。

あと、今回は「Shift_JIS」では全部は表示できなかった。エラーの内容から考えると、文字列の中に「[」を示すコードが入っているようで「[?]」の行が実行できなくなっている。だから、「Shift_JIS版」はその部分を省いた。「表示」が文字化けしている・・・。やはり通常使うのは「EUC」の方がよさそうだ。

ついでだったので、「'?'」で格納した変数と、「"?"」で格納した変数を、引用符の中で展開したらどうなるかも調べてみた。意外なことだが、「」は「'?'」の中でも、エスケープされることがわかった。やはり「」を示すには、常にエスケープするように気をつけたほうがいいのかも。その他にも、引用符に使用している記号だけはエスケープされるようだ。使う文字列によって引用符を使い分けるようにすると、案外便利かも。

ソースコード

respo

respo link

ZenBackWidget

 - 情報技術について