匿名質問者

perlで文字列の置き換え


上部・下部メニュー部分をテンプレートを呼び出し、表示させるようにしています。
sub view{
open(FILE,"../../../html/lib/$ssifile")||&error("No file.html");
@ssifile=<FILE>;
$ssifile="@ssifile";
close(FILE);
($ssifile_head,$ssifile_body1)=split(/<body>/,$ssifile);
($ssifile_body,$ssifile_foot)=split(/<\/body>/,$ssifile_body1);
print "$ssifile_body\n";
}
$ssifileはメニューボタンが格納されています。
また、別のものと共有で利用しているのですが、階層が違うのでうまく表示してくれません。
テンプレートには「../../~」で画像等を表記していますが、ここでは「../../../~」にしないと画像・リンクが動作しません。
「print "$ssifile_body\n";」の上に"$ssifile_bodyの「../../」を「../../../」にすべて置き換え"としたいです。
素人考えで
$ssifile_body = ~s/..\/..\//..\/..\/..\//g;
としてみましたが、正常に表示しませんでした。(なぜか数字の羅列が表示…)
これはどのように修正したらよいでしょうか?

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2014/03/12 17:15:04

回答1件)

匿名回答1号 No.1

.もエスケープ

$ssifile_body = ~s/\.\.\/\.\.\//..\/..\/..\//g;

一括エスケープしてセパレータも変更

$ssifile_body = ~s#\Q../../#../../../#g;
  • 匿名回答2号
    匿名回答2号 2014/03/06 01:18:19
    テンプレートに書いてある画像のURLを相対パスで書かなければ良いだけではないのですか?

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません