私は、データベースへの接続が開かれている「DBCONNECT」私のPerlアプリケーションにサブで
sub new {
my $self = {};
$self->{'orcl'} = undef;
$self->{'cgi'} = CGI->new();
bless $self;
return $self;
}
sub getJ {
my $self = shift;
my $requestmethod = $self->{'cgi'}->request_method;
$self->{'orcl'} = dbconnect();
if($requestmethod eq 'POST') {
my $testvar = anotherSub();
}
sub anotherSub {
my $self = shift;
my $sth = $self->{'orcl'}->functionToFetchRow();
}
を次のような構造を持っています。 だから私の問題はanotherSub「それは完璧な作品「)私はエラーがfunctionToFetchRow( 『メソッドを呼び出すことはできません』を取得することを、今、」私はサブで
$self->{'orcl'} = dbconnect();
を行う場合
」です。しかし、私はデータベースへの接続を一度だけ開いて、必要なすべてのSubでは開こうとはしません。
ここに私のせいがありますか?
サブ 'getJ'の最後に波カッコがありません。あなたの問題を実際に見た実際のコードを表示してください。また、完全なエラーメッセージ(おそらく、*で定義されていない値*で終わる)をあなたに渡したかどうかは疑問です。 – Dada
コードのインデントを正しく開始する必要があります。読むのは難しいです。また、同じパッケージにOOPコードと通常の関数が混在しているようです。そのパッケージに 'sub dbconnect'が定義されている場合、それはメソッドでなければならず、' $ self'でも呼び出されます。インポートされている場合は、インポートする必要はありませんが、パッケージを含む完全修飾名を使用する必要があります。そうしないと、後でオブジェクトのメソッドとして使用できるようになります。 '$ class'(' $ self'に似ていますが、パッケージ名を保持しています)を 'sub new'に入れ、そのクラスに' bless'する必要があります。そうしないと後でサブクラス化できません。 – simbabque
Perlタグの[codereview.se]に実際のフルコード(またはインターネット上で公開したいと思う作業用サブセット)を投稿することを検討してください。あなたのスタイルに関するフィードバックをお送りし、コード。 – simbabque