• ベストアンサー

ダブルクォーテーションの中に文を使いたい。

my $i = 100;としてあるとき、 print "検索結果は$i件です"; とすると"検索結果は100件です"と表示されますよね。 このときに、$iに加算せず、また$iの他に変数を作らず、 "検索結果は101件です"と表示されるように、 print文の引数、ダブルクォーテーション内に手を加えたいのですが どのようにしたら良いのでしょうか? どなたかアドバイスしていただけると嬉しいです。

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

  • ベストアンサー
  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.4

あんまり使うことをおすすめできんのですが、どうしてもということならば print <<_HTML_ 検索結果は${\do{$i+1}}件です _HTML_ こうします。 doの中には関数呼び出しも書けます。

wnsml
質問者

お礼

ありがとうございます! 無事に表示できました。気をつけながら使わせていただきます _ _

その他の回答 (4)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.5

配列コンテキストにしていいなら print "検索結果は@{[$i+1]}件です\n"; 無理矢理スカラーコンテキストにしたいなら print "検索結果は@{[scalar ($i+1)]}件です\n"; #4 と同じく, 任意の式が使えます.

wnsml
質問者

お礼

ありがとうございます! なるほどー、と頷いてしまいました。全く思いつかない方法でした。。 配列のリファレンスにしてからデリファレンスするのですね。 使わせていただきます _ _

回答No.3

#2です。 #1さんのやり方は、ヒアドキュメントがあっても使えます。 #! /usr/bin/perl my $count = 100; printf <<"_HTML_", $count+1; 検索結果は%d件です。 _HTML_

wnsml
質問者

補足

すみません、説明不足でした; 何度もすみません、ありがとうございます _ _ ヒアドキュメントを使う際に、 $i以外にもいくつもの変数をその中に入れるので printfを使うと変数の配置がやりにくくなってしまうんです; ですので、文中で直接使える方法があればいいなと思い再度質問させていただきました。 P.S. "${print $i}"を使えないかな、とも考えたのですが、未だにダブルクォーテーション内に手を加えやる方法が思いつかないです;

回答No.2

#1さんの方法以外にもこんなやり方もあります。 print "検索結果は" . ($i+1) . "件です";

wnsml
質問者

お礼

ありがとうございます。使わせていただきます _ _

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.1

やる方法はありますけど、 printf "検索結果は%d件です", $i+1; ではいけないのですか?

wnsml
質問者

補足

ありがとうございます。printf使わせていただきます_ _ 質問文に書き忘れてしまったのですが(すみません)、 質問文の様なときや、またヒアドキュメント print << "_HTML_" うんやらかんやら $i なんやらかんやら _HTML_ の時で困っているので、もし宜しければ"やる方法"、ご教授していただけると嬉しいです _ _

関連するQ&A