perlプログラムで
サブルーチンの中で、別のサブルーチンを呼び出していますが、
なぜか認識しません。
KCatchでは以下の表示をしています。
Catch: Mon Sep 22 07:56:36 2003
-------------------------------------------------
[regist.cgi:375:die] Undefined subroutine &main::lock called.
>&lock;
-------------------------------------------------
regist.cgi with Perl 5.00502 for freebsd
サブルーチン名には頭に & を付けて呼び出しています。
サブルーチンは、スクリプトの最後にまとめてあります。
同じサブルーチンは、他のスクリプトでも利用していますが、
エラーは出ていないのですが。
何が原因か、わかりません。
関係ないかもしれませんが、プログラム最初の方でuse strict;の宣言をしています。
他のサブルーチンも認識しません。
KCacthの表示は同じ
&main::サブルーチン名 called になっています。
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
下記前提でよいでしょうか。
&lock(); ・・・(lockを呼び出している箇所)
sub lock ・・・サブルーチン:lockの定義
{
・・・
}
上記は1つのソースファイル上にある。
とすると、考えられるのは、
1.undef (&lock); により未定義にしている。
2.__DATA__のあとにsub lockを定義している為、サブルーチンとして認識されない。(__END__も同様)
です。上記の2点はOKでしょうか?
tatsu99さん
ご指摘ありがとうございます。
2.__DATA__のあとにsub lockを定義している為、でした。
perl初心者で__DATA__の使い方を知りませんでした。
無事解決しました。
No.2
- 回答日時:
これだけではなんとも言えません(^^;
サブルーチンが定義されていないようにPerlには見えるということなのでしょうけれど。
まず、strict宣言についてですが、
一度はずして実行し、確認してみればいいかと思います。
(はずして動かなくなると言うことは普通ありませんから)
一瞬スペルミスの類かとも思いましたが、
前回の書き込みを見る限り他のルーチンも未定義になっているんですよね。
・・となると関係なさそうです。
一番可能性が大きそうなのは、
&lockが、mainパッケージではなくて、
他のパッケージ中にあるという状況ですが・・
(サブルーチンは別ファイルのライブラリやモジュール内を呼び出しているのでしょうか?)
natsuki_tkさん
ありがとうございます。
__DATA__の後にルーチンを呼び出しているのが、間違いだったようで、無事解決しました。
それとは別に、サブルーチンを別ファイルのライブラリやモジュール内で呼び出し方も、調べたいと思います。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Perl perlのrequireの動き方についての質問 2 2022/10/30 17:27
- Perl perlの構文でカンマの意味が分からない 2 2022/10/30 01:53
- Perl perlで2次元配列をサブルーチンに値渡しで渡す 5 2022/12/17 18:49
- Perl perlをバージョンアップしたら、今まで正常に動いていたプログラムが、エラーになってしまった 3 2022/10/05 15:44
- CGI 古ーくからフリーのtree.cgi掲示板を利用させてもらって来ましたが、最新でなにか復活できないか? 2 2023/04/07 10:43
- その他(プログラミング・Web制作) 外付ディスプレイで AutoHotkey の MouseMove コマンドを実行するとマウスカーソル 1 2023/03/06 00:04
- その他(プログラミング・Web制作) FORTRAN77の配列(除算) 2 2023/02/01 14:34
- C言語・C++・C# C言語初心者 ポインタについて、お助けください、、 2 2023/03/15 23:50
- Perl Perl の外部モジュールの利用方法 3 2022/07/10 18:34
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
例外処理のフローチャートの記...
-
Excel VBAで、ユーザーフォー...
-
ExcelVBA AddinでOnAction
-
ACCESSのVBAでPrivate Sub ~en...
-
COBOLで、Shellを起動するには?
-
VBAで2重のDoLoop関数から抜け...
-
モジュールとサブルーチン
-
プログラムの可読性が悪いです...
-
GOSUB命令とは
-
VBAのサブルーチンとプロシージ...
-
fortran subroutineについて
-
BASIC言語で時差を求めるには?
-
ArduinoのジャイロモジュールMP...
-
Excel VBAでリンク切れをチェッ...
-
エクセルVBAでシートモジュール...
-
ユーザー定義関数に#NAME?が返...
-
VBAで別モジュールへの変数の受...
-
Perlソースコードをコンパイル...
-
モジュールとは何ですか
-
Form間の値の渡し方
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
例外処理のフローチャートの記...
-
Excel VBAで、ユーザーフォー...
-
COBOLで、Shellを起動するには?
-
モジュールとサブルーチン
-
”:”がいっぱいの文について。
-
GOSUB命令とは
-
ACCESSのVBAでPrivate Sub ~en...
-
サブルーチンを使った再帰的な...
-
サブルーチンを認識しません。
-
初歩的な質問なのですが、サブ...
-
オフコン(富士通Kシリーズ)...
-
perlの構文でカンマの意味が分...
-
サブルーチンの中にサブルーチ...
-
配列と互換性のない型の要素に...
-
ExcelVBA AddinでOnAction
-
perlを使って英文だけを取り出...
-
Excel VBAから利用できるフリー...
-
Attempt to free unreferenced ...
-
サブルーチンやif分以外での中括弧
-
サブルーチンに引数を2つ以上...
おすすめ情報