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で、ユーザーフォー...
-
例外処理のフローチャートの記...
-
COBOLで、Shellを起動するには?
-
オフコン(富士通Kシリーズ)...
-
モジュールとサブルーチン
-
LCD ディスプレイを Raspberry ...
-
ArduinoのジャイロモジュールMP...
-
Excel VBAでリンク切れをチェッ...
-
モジュールとクラスの違いって...
-
VBAでoutlook365が起動しません。
-
Wordで、分かち書きをするVBA ...
-
Excel VBA 定義されたプロージ...
-
Excelで時刻になったら知らせて...
-
powershellで関数名を変更する...
-
グラフのX,Y座標を取得したい
-
vba 標準モジュールインポート...
-
Perl+DBD::Oracleのエラーがわ...
-
VB.NETでの他アプリケーション...
-
VBAのモジュールについて教えて...
-
Apache2 静的・動的モジュール...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
例外処理のフローチャートの記...
-
Excel VBAで、ユーザーフォー...
-
モジュールとサブルーチン
-
perlの構文でカンマの意味が分...
-
COBOLで、Shellを起動するには?
-
ACCESSのVBAでPrivate Sub ~en...
-
GOSUB命令とは
-
サブルーチンを認識しません。
-
エクセルVBAでサブルーチン...
-
ExcelVBA AddinでOnAction
-
初歩的な質問なのですが、サブ...
-
Excel VBAから利用できるフリー...
-
VBAのサブルーチンとプロシージ...
-
VBAで2重のDoLoop関数から抜け...
-
Attempt to free unreferenced ...
-
オフコン(富士通Kシリーズ)...
-
初心者です。Perlではどんな時...
-
”:”がいっぱいの文について。
-
サブルーチンやif分以外での中括弧
-
fortran95実行エラー
おすすめ情報