
最近Perlを勉強し始めたのですが、正規表現の扱いに困っています、よろしくお願いします。
rog.txt
<usr1> ~~
(usr2) ~~
usr3 > ~~
<usr1> ~~
usr3 > ~~
というようなテキストの、ユーザー表示部分(ユーザー名の囲い方はcgi側からは指定できない)を、利用者がhtml上のフォームから
「<usr1> 」は「○○」に
「(usr2) 」は「××」に...
というように指定して一気に変換するcgiを作っています。
ユーザー名部分だけを配列に溜めて、フォームを表示して、変換指定を受け取るところまではできたのですが
最後の変換の部分で上手くいかなくて困っています。
@oldRog には上記のテキストを読み込んで1行ごとに代入
@tmpOldName にはフォームから受け取った古い名前を代入
@tmpNewName にはフォームから受け取った新しい名前を代入してあります
$i = 0;
foreach(@oldRog){
$j = 0;
$tmp = $_;
foreach(@tmpOldName){
$tmp =~ s/^$tmpOldName[$j]/$tmpNewName[$j] /;
$j = $j + 1;
}
$rog[$i] = $tmp;
$i = $i + 1;
}
実行してみるとユーザー名を囲う印に"("などが使用されているとその名前が全て変換されません
おそらく正規表現上で意味のある"("と解釈されているのだろうと考え
エスケープさせるために"\"を使おうと思ったのですが、
$tmp =~ s/^\$tmpOldName[$j]/$tmpNewName[$j] /;
としてみてもうまくいきませんでした。
先にテキストファイルのほうで半角(から全角(に変換する等して回避はできたのですが
できれば変換の部分だけで処理したく思っています
よろしくお願いします
*タブが消えてしまっていたので上げ直しました、ここの使い方にまだ慣れておらず申し訳ありません
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
INDIRECT 横に再度抽出したい
-
Strawberry Perl for Windows ...
-
perlのプログラミング 部分入れ...
-
Perlでファイルの末尾から指定...
-
perl の open について教えてく...
-
Perl言語について。
-
ファイルをディレクトリ分配の...
-
アルファベットに付いて質問し...
-
#!/usr/bin/perlで書きだしたCG...
-
Perlのエラーについてご教授く...
-
perlのflock関数でロックをかけ...
-
AI sisterとは、偽物の人ですか?
-
bashスクリプト
-
ファイルアイコンの左下に緑の□...
-
perlプログラミング 空白行削除
-
perlでリテラル値はメモリにど...
-
perlで2次元配列をサブルーチ...
-
Perlで時間の計算
-
perlについて
-
perlのrequireの動き方について...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テキストファイルで提出とは?
-
Perlのエラーについてご教授く...
-
perlをバージョンアップしたら...
-
Perlで時間の計算
-
Wallpaper Engineでおすすめの...
-
Perl言語について。
-
perlで2次元配列をサブルーチ...
-
Strawberry Perl for Windows ...
-
#!/usr/bin/perlで書きだしたCG...
-
perl の open について教えてく...
-
INDIRECT 横に再度抽出したい
-
アルファベットに付いて質問し...
-
openした後、closeしないでプロ...
-
画像が表示でnull; this.src
-
VBA変数をFunction.VLookupの戻...
-
perlのflock関数でロックをかけ...
-
Perl の外部モジュールの利用方法
-
TeraPadエディターの操作方法に...
-
bashスクリプト
-
perlの構文でカンマの意味が分...
おすすめ情報