- ベストアンサー
ダブルクォーテーションの中に文を使いたい。
my $i = 100;としてあるとき、 print "検索結果は$i件です"; とすると"検索結果は100件です"と表示されますよね。 このときに、$iに加算せず、また$iの他に変数を作らず、 "検索結果は101件です"と表示されるように、 print文の引数、ダブルクォーテーション内に手を加えたいのですが どのようにしたら良いのでしょうか? どなたかアドバイスしていただけると嬉しいです。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
あんまり使うことをおすすめできんのですが、どうしてもということならば print <<_HTML_ 検索結果は${\do{$i+1}}件です _HTML_ こうします。 doの中には関数呼び出しも書けます。
その他の回答 (4)
- Tacosan
- ベストアンサー率23% (3656/15482)
配列コンテキストにしていいなら print "検索結果は@{[$i+1]}件です\n"; 無理矢理スカラーコンテキストにしたいなら print "検索結果は@{[scalar ($i+1)]}件です\n"; #4 と同じく, 任意の式が使えます.
お礼
ありがとうございます! なるほどー、と頷いてしまいました。全く思いつかない方法でした。。 配列のリファレンスにしてからデリファレンスするのですね。 使わせていただきます _ _
- shuyamakawa
- ベストアンサー率67% (111/164)
#2です。 #1さんのやり方は、ヒアドキュメントがあっても使えます。 #! /usr/bin/perl my $count = 100; printf <<"_HTML_", $count+1; 検索結果は%d件です。 _HTML_
補足
すみません、説明不足でした; 何度もすみません、ありがとうございます _ _ ヒアドキュメントを使う際に、 $i以外にもいくつもの変数をその中に入れるので printfを使うと変数の配置がやりにくくなってしまうんです; ですので、文中で直接使える方法があればいいなと思い再度質問させていただきました。 P.S. "${print $i}"を使えないかな、とも考えたのですが、未だにダブルクォーテーション内に手を加えやる方法が思いつかないです;
- shuyamakawa
- ベストアンサー率67% (111/164)
#1さんの方法以外にもこんなやり方もあります。 print "検索結果は" . ($i+1) . "件です";
お礼
ありがとうございます。使わせていただきます _ _
- sakusaker7
- ベストアンサー率62% (800/1280)
やる方法はありますけど、 printf "検索結果は%d件です", $i+1; ではいけないのですか?
補足
ありがとうございます。printf使わせていただきます_ _ 質問文に書き忘れてしまったのですが(すみません)、 質問文の様なときや、またヒアドキュメント print << "_HTML_" うんやらかんやら $i なんやらかんやら _HTML_ の時で困っているので、もし宜しければ"やる方法"、ご教授していただけると嬉しいです _ _
お礼
ありがとうございます! 無事に表示できました。気をつけながら使わせていただきます _ _