- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:eval文中の+)
Perlのeval文で+はスペースとして扱われる?
このQ&Aのポイント
- Perlのeval文で、$str='hoge'; eval "print+$str"; とすると「hoge」と出力されます。
- eval "print+1+2"; の場合はちゃんと3と表示されるし、きっとevalのほうで+を適当に解釈してるんだと思いますが、それであってるんでしょうか。
- 特殊に評価される文字や関連文献についても教えていただけると嬉しいです。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
別に eval でなくても print + "abc\n"; で abc が出ますね。あと、 print - "abc\n"; だと、-abc が出ます。 これらから想像すると、数値に単項演算子の + や - をつけたのと 同じような解釈をしているようです。 というわけで、マニュアル perlop の Symbolic Unary Operators の節を見てみると(日本語のは持ってないので、英語のを簡単に訳 すと)、 「単項の "+" は(文字列に対してさえも)まったく何の効果も持たない」 とあります。 ついでに、 「単項の "-" は、オペランドが数値なら算術の否定。識別子なら、 "-" とその識別子をくっつけた文字列。オペランドの文字列が + か - で始まっていたら、それを逆にした文字列。」 とあります。つまり、 - "-abc" -> "+abc" なんですねぇ…。知らなかった… ^^
お礼
やっぱり単項+でいいんですね。 とても参考になりました。 Perlって記号がいろいろな使われ方するから、 まだまだ自分の知らない文法が隠されてるんじゃないか思うことが ときどきあります。 単に読み方を間違えてるだけなんですけどね。たいてい。^^;