perlについて


下記のコードを入れるとエラーになってしまいます。
原因を教えてください。

foreach my $key (@items1){
$value = $FORM{$key};
$_ =~ s/(name="$key".+?value="$value")/$1 selected="selected"/egm;
}

よろしくお願いします。

回答の条件
  • 1人1回まで
  • 登録:2008/08/06 16:10:16
  • 終了:2008/08/08 09:47:59

ベストアンサー

id:Mars No.1

Mars回答回数203ベストアンサー獲得回数202008/08/06 17:14:58

ポイント60pt

置換のオプションの「e」が原因では?

$1 selected="selected" が式として実行できないのでエラーになっているようです。

特に実行の必要もなさそうだし、~/gm; で大丈夫だと思います。

id:worldtravel

ありがとうございました。

エラーは無くなりました。

追記で申し訳ありませんが、

置き換えがうまく行きません。

置換えられないのですが問題点はありますでしょうか?

どなたでも構いませんのでお願いします。

2008/08/07 07:49:22
  • id:shintabo
    id:Mars さんが、言っている通りですが、
    foreach内の、「$_」って・・・
    ここだけ切り出しているので、なんとも言えませんが・・・
  • id:worldtravel
    ありがとうございます。
    こんな感じにしています。

    open(IN,$htmlfile);
    while (<IN>) {
    foreach my $key (@items1){
    $value = $FORM{$key};
    $_ =~ s/(name="$key".+value="$value")/$1 selected="selected"/gm;
    }
    $contents .= $_;
    }
    close(IN);
  • id:Mars
    回答が一人一回なのでコメントで。

    ずいぶんと原型を壊しましたが、以下のようにしてはどうでしょうか?

    open IN,$htmlfile;
    read IN,$contents,-s $htmlfile;
    close IN;
    foreach my $key (@items1){
    $value = $FORM{$key};
    $contents =~ s/(name="$key".+?value="$value")/$1 selected="selected"/s;
    }
  • id:worldtravel
    ありがとうございました。

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

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

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

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません