燈明ブログ

現状は小池啓仁の応援ブログ

Perlでの『単項プラス演算子』とは

たとえば、以下の『+』は、どのような意味があるのでしょうか(足し算?文字連結?)。

      $pat = quotemeta +(qw/ 表 /)[0];

これは、『単項プラス演算子』といって、『(qw/ 表 /)[0]』を引数として関数に渡す前に、引数の部分を先に処理してからその結果を関数の引数とするのです。
今回の場合は、quotemeta関数の引数は、一つでスカラーなので、これにあわせて先に『(qw/ 表 /)[0]』の処理をしているわけです。
もう少し詳しく言い直すと、リスト内をシングルクォートし、先頭要素(スカラー)を一つの引数として、quotemeta関数(引数は一つでスカラー)へ渡しています。


このように『単項プラス演算子』は、関数の引数を関数実行より先に評価する場合に有効です。


ちなみに、quotemeta関数は、文字列を一つ引数にとりますが、この文字列に対して英数字以外の文字の前にエスケープの『\』を挿入し、その文字列をリターン値で返します。