![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
初歩的な質問で失礼いたします。
下記の記述でプログラムを実行すると正常にプログラムが動きます。(省略以降は全く同一のプログラムです)
■実行問題なし1
#!/usr/local/bin/perl
require 'cgi-lib.pl';
require 'jcode.pl';
--------省略---------------
■実行問題なし2
#!/usr/local/bin/perl
use strict;
use DBI;
--------省略---------------
しかし、下記の記述だとエラーが発生していまいます。
#!/usr/local/bin/perl
use strict;
use DBI;
require 'cgi-lib.pl';
require 'jcode.pl';
--------省略---------------
エラーログは、下記の通りです。
Global symbol "$in" requires explicit package name at search.cgi line 21.
Global symbol "$parameter" requires explicit package name at search.cgi line 23.
Global symbol "$name" requires explicit package name at search.cgi line 23.
Execution of search.cgi aborted due to compilation errors.
requireとuseは同時に記述してはいけないのでしょうか?
同時に記述しないと目的のプログラムを実現する方法が大きく変わってきてしまうので、非常に困ってしまいます。
もし、ご存知の方がいらっしゃったら教えてください。
宜しくお願い致します。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
use と requireを同時に使ったのが理由ではありません。
#1の方の回答にある通り、use strict; をはずせばこのエラーは
なくなると思いますが、
use strict;
use DBI;
require 'cgi-lib.pl';
require 'jcode.pl';
なんでCGI.pmとかJcode.pm を使わないのでしょう?
これらを使えばuse strict していても問題ないはずです。
あとは
our $in;
our $parameter;
our $name;
を先頭付近に追加してもいけるかな?
この回答への補足
sakusaker7さん
ご回答ありがとうございました。
確かに、use strict;を外すと、この部分については動作するのですが、DB接続の記述で今度はエラーが発生していまします。その為、下記のようにしてプログラムを実行してみました。
use strict;
use DBI;
require 'cgi-lib.pl';
require 'jcode.pl';
our $in;
our $parameter;
our $name;
our $dbh;
----------省略--------------------
しかし、下記のエラーで実行できませんでした。
Global symbol "$in" requires explicit package name at /web/search.cgi line 7.
Global symbol "$parameter" requires explicit package name at /web/search.cgi line 8.
Global symbol "$name" requires explicit package name at /web/search.cgi line 9.
Global symbol "$dbh" requires explicit package name at /web/search.cgi line 10.
Execution of /web/search.cgi aborted due to compilation errors.
前画面から受け取ったデータの文字列を使い、DB検索をするような事を実現するためには、やはりCGI.pmもしくはJcode.pmを利用しないとダメでしょうか?
質問ばかりですみません。
すみません。私の勘違いでした。
use strict;をコメントアウトすることで
問題解決いたしました。
ご迷惑をおかけしました。
ありがとうございました!
No.1
- 回答日時:
use Strict を外すとどうなりますか?
strict - 安全ではないコンストラクトを制限する Perl プラグマ
http://perldoc.jp/docs/perl/5.8.1/strict.pod
この回答への補足
ありがとうございます。下記のコードにして実行してみました。
#!/usr/local/bin/perl
#use strict;
use DBI;
require 'cgi-lib.pl';
require 'jcode.pl';
$ENV{ORACLE_HOME}='/opt/app/oracle/product/';
$ENV{NLS_LANG} = 'JAPANESE_JAPAN.JA16SJIS';
$ENV{NLS_LANGUAGE} = 'JAPANESE';
my $datasrc = "xxx";
my $username = "BBB";
my $password = "AAA";
my $sql = "SELECT NAME FROM PROFILE";
my $sth = $dbh->prepare($sql) || die $dbh->errstr;
$sth->execute || die $dbh->errstr;
$| = 1;
read STDIN,$in,$ENV{'CONTENT_LENGTH'};
# 文字列を分解
($parameter, $name) = split /=/, $in;
---------------省略-----------------
しかし、エラーが「Can't call method "prepare" on an undefined value at /web/search.cgi line 20.」
と出てしまいました。
前の画面から文字列の受け渡しを行い、その文字列をSQLにセットし、特定のレコードを取得するには、上記のライブラリ構成では難しいでしょうか?
周りに相談する相手もいなくて、初歩的な質問で本当にすみません。
すみません。私の勘違いでした。
use strict;をコメントアウトすることで
問題解決いたしました。
ご迷惑をおかけしました。
ありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Perl Perl の外部モジュールの利用方法 3 2022/07/10 18:34
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- Perl perlの構文でカンマの意味が分からない 2 2022/10/30 01:53
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- その他(プログラミング・Web制作) ラズパイ上の、pythonのエラーについて 1 2023/04/12 23:27
- その他(プログラミング・Web制作) Pythonで会員サイトの自動ログイン ID Nameがない 1 2022/12/16 02:09
- UNIX・Linux cronの@rebootでのdateコマンドの実行につきまして 2 2023/06/11 16:23
- JavaScript 初心者です。gulpでコンパイルができないので教えてください! 1 2023/05/17 17:07
- MySQL Mac です。ローカルホストの phpMyAdmin にアクセスできません。 1 2023/06/06 17:14
- UNIX・Linux postfix smtpサーバーリレーがTLSハンドシェーク失敗 1 2022/08/15 15:45
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
jcode.plが読み込めない
-
cgiとplとpm
-
Not Found 404エラー時のCGI出力
-
セッションファイルが作成でき...
-
useとrequireでエラー
-
コマンドラインでGET or POSTで...
-
6月の第2 第4火曜日は何日...
-
月の第一週とは
-
よくある 『 第○(1・2・3・4・...
-
DBを10件毎に表示ページング...
-
[Excel] ある日の曜日が当月の"...
-
VBAでExcelのヘッダーに文字列+...
-
週2回のペースって だいたい何...
-
毎○曜日って、使いますか?
-
VBA。複数のChangeイベントをま...
-
エクセルで相対パスの書き方を...
-
エクセルで毎月第2週日の水曜日...
-
Excel VBA 第〇△曜日の場合休日...
-
土曜日の26時って何曜日の何時...
-
1日1回しかアクセスできないページ
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
perlのrequireの動き方について...
-
Quantifier follows nothing in...
-
jcode.plが読み込めない
-
cgiとplとpm
-
htmlからテキストを返すperlを...
-
requireでreturnを使いたいので...
-
Perlソースを2つのファイルに分...
-
htmlファイルへのcgiの組み込み...
-
use CGI
-
セッションファイルが作成でき...
-
useとrequireでエラー
-
バイナリファイルのアップロード
-
自CGIのURLのパス部分を取得す...
-
Location: で cgi → c...
-
apacheのCGI設定について教えて...
-
error_logファイルの中身で教え...
-
webからroot権限のコマンドを実...
-
cgiからcgiをコールする。
-
Perlのデバッグ方法って。。。...
-
Perlの作動不具合、missing bra...
おすすめ情報