if(not $name =~ /${COOKIE_PREFIX}_(.+)/) {
このコードを書いているファイルに
use strict;
宣言をしたら、このコードの部分で
Variable "$COOKIE_PREFIX" is not imported at SeveralRoutine.pl line 173, line 855.
Global symbol "$COOKIE_PREFIX" requires explicit package name at SeveralRoutine.pl line 173, line 855.
Compilation failed in require at O:\public_html\besthotel\freeboard\cgi\listbbs.cgi line 8, line 855.
のようなエラーが出ました。
$COOKIE_PREFIXを宣言しているのはメインルーチンであるlistbbs.cgiで、このファイルがSeveralRoutine.plなので、
${COOKIE_PREFIX}
を
$main::{COOKIE_PREFIX}
と書き換えてみました。
すると
Quantifier follows nothing in regex; marked by <-- HERE in m/* <-- HERE main::COOKIE_PREFIX_(.+)/ at SeveralRoutine.pl line 173, line 855.
と、エラーの内容が変わりました。
Variable "なんたらかんたら" is not imported・・・
というエラーメッセージはこの他にも多数出ましたが、それらは
"なんたらかんたら"
の前に
main::
と付けたら直りました。メインルーチンの中で定義した変数を別のファイルで用いようとしたために起きたエラーです。
ところが件のコードは
$name
が
「$COOKIE_PREFIXにアンダーバー付きで添え字」
してある形式になっていなかったら・・・
という意味合いです。
メインルーチンで定義されている$COOKIE_PREFIXそのものをどうしようというコードではありません。
このエラーメッセージは何を言いたいのでしょう。そしてどう直せばこのエラーメッセージが出なくなるのでしょう?
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
すみません。今回のコーディングに件のエラーメッセージは関係なかったようです。
メインルーチンで定義されている変数$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}_(.+)/
これが正解だったんですね。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- UNIX・Linux Kali Linuxで起動できない - Minimal BASH Like Line Editing 1 2022/06/03 13:14
- オープンソース stable diffusionのインストールがうまくいきません。 1 2023/06/20 13:09
- その他(プログラミング・Web制作) python flask から fastapiへの移行時のエラー対処 1 2023/02/05 12:26
- PHP PHPで訪問回数を表示するカウンタを作成したい 3 2023/05/27 07:09
- MySQL テーブル作成です。どこかのスペルが間違っているか記号など スペースかな? 1 2022/10/01 05:08
- その他(プログラミング・Web制作) pythonのエラーについて 2 2022/08/17 17:17
- その他(プログラミング・Web制作) pythonのこのエラーがわかりません 3 2022/11/16 14:54
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- Excel(エクセル) マクロのコードを、少しでも削って短くしたい 3 2022/08/30 07:46
- その他(ソフトウェア) ロイロノート(アプリ版)のログインができません。 2 2022/09/04 21:07
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
perlのrequireの動き方について...
-
よくある 『 第○(1・2・3・4・...
-
月の第一週とは
-
VBAでExcelのヘッダーに文字列+...
-
燃えるゴミの日は何曜日ですか?
-
エクセルで毎月第2週日の水曜日...
-
毎○曜日って、使いますか?
-
土曜日の26時って何曜日の何時...
-
クライアントのIPとマシン名を...
-
apacheでPerl CGIが作動せず、5...
-
エクセルで相対パスの書き方を...
-
平日朝の国道246線混雑状況につ...
-
VBA。複数のChangeイベントをま...
-
「曜日」の名前、変えるとしたら?
-
DBを10件毎に表示ページング...
-
c言語の質問です。 ある月のカ...
-
cgiで拡張子.cgiと拡張子.pl...
-
バイナリファイルのアップロー...
-
指定曜日にMsgBox表示は可能で...
-
[C#]ListView一覧表示時の幅設...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
cgiとplとpm
-
perlのrequireの動き方について...
-
jcode.plが読み込めない
-
自CGIのURLのパス部分を取得す...
-
Perlソースを2つのファイルに分...
-
Perlのデバッグ方法って。。。...
-
mt-check.cgiでForbiddenエラー...
-
webからroot権限のコマンドを実...
-
useとrequireでエラー
-
画像のURLの変数を別のCG...
-
Quantifier follows nothing in...
-
require文が実行できない
-
コマンドラインでGET or POSTで...
-
apacheのCGI設定について教えて...
-
Not Found 404エラー時のCGI出力
-
htmlからテキストを返すperlを...
-
perlのcgiで、変数の中身を表示...
-
use CGI
-
フォームでインクリメント入力→...
-
Internal Server Error
おすすめ情報