アプリ版:「スタンプのみでお礼する」機能のリリースについて

perlのs構文で置き換えに式を用いたいが使い方が分からない
下記の$aの中のcounterの値を夫々1から3に変更した内容を求めたい。
$a="UPDATE SQL詳細 SET SQL詳細.sqlstr = replace_char([sql]) WHERE (((SQL詳細.type)=1));";
$a="UPDATE SQL詳細 SET SQL詳細.sqlstr = replace_char([sql]) WHERE (((SQL詳細.type)=2));";
$a="UPDATE SQL詳細 SET SQL詳細.sqlstr = replace_char([sql]) WHERE (((SQL詳細.type)=3));";

それを求め様として、下記を実行したが下記の様な結果になる。
$a="UPDATE SQL詳細 SET SQL詳細.sqlstr = replace_char([sql]) WHERE (((SQL詳細.type)=counter));";
for $i(1 .. 3){
$a =~ s/counter/$i/e;
print "$a\n";
}

結果は下記です。
UPDATE SQL詳細 SET SQL詳細.sqlstr = replace_char([sql]) WHERE (((SQL詳細.type)=1));
UPDATE SQL詳細 SET SQL詳細.sqlstr = replace_char([sql]) WHERE (((SQL詳細.type)=1));
UPDATE SQL詳細 SET SQL詳細.sqlstr = replace_char([sql]) WHERE (((SQL詳細.type)=1));

何処が可笑しいのだろうか。修正個所とその時のperlのソースを提示願います。
宜しくお願いします。

A 回答 (1件)

あなたが提示されたコードの場合、


$1が1の場合は、成功しますが、$が2の場合は、成功しません。
$aの"counter"の部分は既に1に置き換えられているため、counterの文字が存在しないからです。
以下のようにしてください
----------------------------------
$base="UPDATE SQL詳細 SET SQL詳細.sqlstr = replace_char([sql]) WHERE (((SQL詳細.type)=counter));";
for $i(1 .. 3){
$a = $base;
$a =~ s/counter/$i/e;
print "$a\n";
}
----------------------------------
    • good
    • 0
この回答へのお礼

有難う御座います。
私の完全なミスです。

助かりました。

お礼日時:2015/12/19 11:10

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!