-PR-
解決
済み

eval文中の+

  • 暇なときにでも
  • 質問No.49626
  • 閲覧数61
  • ありがとう数2
  • 気になる数0
  • 回答数1
  • コメント数0

お礼率 100% (7/7)

Perlのeval文で、
$str='hoge';
eval "print+$str";
とすると「hoge」と出力されます。
このとき+はスペースとして扱われているようなのですが、
そのことについてマニュアルなどに記載されていないようです。

eval "print+1+2";
の場合はちゃんと3と表示されるし、
きっとevalのほうで+を適当に解釈してるんだと思いますが、
それであってるんでしょうか。

またこのようなeval中で特殊に評価される文字があるのでしょうか。
できれば関連文献などを教えていただけるとなお嬉しいです。

マニュアルを見落としてる可能性もあるなあ。
そうだったら恥ずかしい。^^;
通報する
  • 回答数1
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.1
レベル11

ベストアンサー率 55% (155/280)

別に eval でなくても
print + "abc\n";
で abc が出ますね。あと、
print - "abc\n";
だと、-abc が出ます。
これらから想像すると、数値に単項演算子の + や - をつけたのと
同じような解釈をしているようです。

というわけで、マニュアル perlop の Symbolic Unary Operators
の節を見てみると(日本語のは持ってないので、英語のを簡単に訳
すと)、
「単項の "+" は(文字列に対してさえも)まったく何の効果も持たない」
とあります。

ついでに、
「単項の "-" は、オペランドが数値なら算術の否定。識別子なら、
"-" とその識別子をくっつけた文字列。オペランドの文字列が +
か - で始まっていたら、それを逆にした文字列。」
とあります。つまり、
- "-abc" -> "+abc"
なんですねぇ…。知らなかった… ^^
お礼コメント
y_oku

お礼率 100% (7/7)

やっぱり単項+でいいんですね。
とても参考になりました。

Perlって記号がいろいろな使われ方するから、
まだまだ自分の知らない文法が隠されてるんじゃないか思うことが
ときどきあります。
単に読み方を間違えてるだけなんですけどね。たいてい。^^;
投稿日時 - 2001-03-09 15:54:12
-PR-
-PR-
このQ&Aで解決しましたか?
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ