• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Perlで変数を使用した置換ができない)

Perlで変数を使用した置換ができない

このQ&Aのポイント
  • Perlのスクリプトで変数を使用した置換がうまくいかない場合、正しい展開方法を確認する必要があります。
  • 変数展開がうまくいかない場合、変数が正しく設定されているか、正しい置換方法を使用しているかを確認しましょう。
  • Perlの置換処理では、正規表現を使用して置換することが一般的です。正しい正規表現のパターンを設定することで、変数の展開が正しく行われます。

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

  • ベストアンサー
  • kumoz
  • ベストアンサー率64% (120/185)
回答No.5

正規表現の置換部はダブルクォート文字列と同様に評価されるので、次の2つの文は同じように機能します。質問のケースでは、変数を2重に置き換えなければならないので、明示的にダブルクォートが必要になります。 $string[$i+1] =~ s/$search/$1回/g; $string[$i+1] =~ s/$search/"$1回"/eg;

cat-rice
質問者

お礼

なるほど、よくわかりました。 ありがとうございました。

その他の回答 (4)

  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.4

>ただ、質問に対する回答としてはズレがあるのではないかと思います。  と言われても、 >>ファイル内の「1 2 3 4 5」などの数字の箇所を、「1回 2回 3回 4回 5回」のように、「回」をつけた形に変えることを考えています。  だったらいちいち配列やハッシュに入れる必要はないかと・・  もうすこし具体的にオリジナルデータ中に、ぽつんと「1\t2\t3\t4\t5」とあるのか、詳しい説明がないと・・ 例 1_挨拶とオリエンテーション 2_カリキュラムの紹介、HTMLとは ・・・とか

cat-rice
質問者

お礼

質問に答えるだけの能力がないことをわざわざお知らせいただき、ありがとうございました。 今後ともよろしくお願いします。

  • kumoz
  • ベストアンサー率64% (120/185)
回答No.3

次のようにすれば、置き換えられるかも? $string[$i+1] =~ s/$search/qq(\"$replace\")/eeg;

cat-rice
質問者

お礼

ありがとうございました。無事、動きました。 もしよろしければ、補足入力もご覧いただければと思います。

cat-rice
質問者

補足

ありがとうございました。置換文字列を「式」とみなす(evaluation)ことを2回繰り返しているのですね。ただ、ここでの$replaceが、どのようにして最終的な展開形となるのか、うまく自分の頭のなかで説明できません。qq( ) と、" " がどのように機能している(「"」がエスケープされている理由も含めて)のでしょうか。

  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.2

(my $search, my $replace) は2値の配列なのに、元データは?? chomp($search_replace); my $separator = "\t"; my $newSeparator = "回"; $search_replace =~s/$separator/$newSeparator/g; print $search_replace,$newSeparator,"\n"; とか chomp($search_replace); my $separator = "\t"; my $newSeparator = "回"; my @data = split(/$separator/, $search_replace); while(<@data>){ print $_,$newSeparator; } print "\n";

cat-rice
質問者

お礼

ありがとうございました。ただ、質問に対する回答としてはズレがあるのではないかと思います。

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

えばる

cat-rice
質問者

お礼

ありがとうございました。鈍感な私では、それがevaluationのことだとはわかりませんでした。

関連するQ&A