• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Quantifier follows nothing in regex; marked って?)

正規表現でのQuantifier follows nothing in regex; markedって?

このQ&Aのポイント
  • 正規表現のパターン内でQuantifier follows nothing in regexエラーが発生します。
  • $COOKIE_PREFIX変数の定義が別のファイルで使用されているため、エラーが発生しています。
  • エラーメッセージの解決方法は、$COOKIE_PREFIX変数の前にmain::を付けて直すことです。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

自信がないんですが、量指定子と紛らわしいといっているんだと思いま す。以下の例なら何も言われませんでした。参考URLも参考になると思いま す use warnings; use strict; our $COOKIE_PREFIX = 'aaa'; my $name = 'aaaa_bbb'; # Quantifier follows nothing in regex; ... # 量指定子{}と紛らわしい ? # if ( not $name =~ /$main::{COOKIE_PREFIX}_(.+)/ ) { # print "test1\n"; # } # else { # print "test2\n"; # } # 何も言われない if ( not $name =~ /${main::COOKIE_PREFIX}_(.+)/ ) { print "test1\n"; } else { print "test2\n"; }

参考URL:
http://perldoc.jp/docs/perl/5.10.0/perldiag.pod
makoji
質問者

お礼

すみません。今回のコーディングに件のエラーメッセージは関係なかったようです。 メインルーチンで定義されている変数$COOKIE_PREFIXを別のファイルで用いるために  main:: を付けたのですが、問題は正規表現  $name =~ /${COOKIE_PREFIX}_(.+)/ のどこに  main:: を入れるのかという点で、私は  $main::{COOKIE_PREFIX} と記述しました。 その結果が  Quantifier follows nothing in regex; marked by <-- HERE in m/* <-- HERE main::COOKIE_PREFIX_(.+)/ at SeveralRoutine.pl line 173, line 855. というエラーになったのですが、  「正規表現中で量指定子は何にも伴われていない」 という指摘に対して、件の正規表現の方は、ちゃんと  「.」(全ての文字) という文字指定子を記述しています。 それでおかしいな、どういうことなんだと質問したわけですが、_--_1l1_1_さんのコードを見て気付きました。  $name =~ /${main::COOKIE_PREFIX}_(.+)/ これが正解だったんですね。 ありがとうございました。