どうしたら良いでしょうか?
◆
以下のコードで、
http://www.zzz.com/index.html
と表示させたい。
◆コード→
$key="/xxx/^(.*?)html";
$value="http://www.zzz.com/\1html";
$test = "/xxx/index.html";
$test =~ s/$key/$value/g;
print $test;
$key="/xxx/(.*?)html"; $value='"http://www.example.com/$1html"'; $test = "/xxx/index.html"; $test =~ s/$key/$value/eeg; print $test;
こういう手も。バージョン依存は知らない。
あと、こういうときはexample.comを使うべき。
コメントとまちがえて回答してしまいました。
なにをどうしたいのかわからないです。\1ではなくて$1でしょうか。
> \1ではなくて$1でしょうか。
はい。
すいませんコードが間違えていました。
◆修正コード→
$key="/xxx/(.*?)html";
$value="http://www.zzz.com/$1html";
$test = "/xxx/index.html";
$test =~ s/$key/$value/g;
print $test;
◆
http://www.zzz.com/html
となってしまう。
http://www.zzz.com/index.html
と表示させたい。
出来ないという証明は出来ませんが、
どこまで出来るかについて下記のようにテストしてみると良いでしょう
(エスケープが面倒だったのでセパレータは/ではなく!を宛がってます)
# (1)パターンが正しいかどうかの確認 $test = "/xxx/index.html"; $key="/xxx/^(.*?)html"; if ($test =~ m/$key/) { print "$key:OK\n" } else { print "$key:NG\n"; } $key="/xxx/(.+?).html"; if ($test =~ m/$key/) { print "$key:OK\n" } else { print "$key:NG\n"; } print "\n"; #(2)後方参照変数に格納されているかどうかの確認 $test = "/xxx/index.html"; $test =~ s!$key!http://www.zzz.com/$1html!g; print $test; print "\n"; $test = "/xxx/yyyy.html"; $test =~ s!$key!http://www.zzz.com/$1html!g; print $test; print "\n";
以下の点については修正・確認が必要です
・後方参照変数は$であって¥ではない
・$keyがおかしいから後方参照変数に格納されていなかった
すいません。
「$test =~ s!$key!http://www.zzz.com/$1html!g;」は、
「$test =~ s!$key!$value!g;」としたいのです。
上記を参考にコードを修正したのですが、$valueで置換した場合は、やはり後方参照されませんでした。
直接置換するわけではないですけどこういう方法でどうでしょうか。
$key="/xxx/(.*?)html"; $value='http://www.zzz.com/%shtml'; $test = "/xxx/index.html"; $test =~ s/$key/sprintf $value, $1/eg; print $test;
欲しい内容とは違うのですが、後々役立ちそうです。
ありがとうございます。
$key="/xxx/(.*?)html"; $value='"http://www.example.com/$1html"'; $test = "/xxx/index.html"; $test =~ s/$key/$value/eeg; print $test;
こういう手も。バージョン依存は知らない。
あと、こういうときはexample.comを使うべき。
うまくいきました!ありがとうございます。
そして、「example.com」を使うようにします。ご指導ありがとうございます。
うまくいきました!ありがとうございます。
2011/11/16 21:46:10そして、「example.com」を使うようにします。ご指導ありがとうございます。