2012-03-04 6 views
4

で変更できません。クラスに次のエラーが表示されます。「file.do行26で非左辺サブルーチンコールを変更できません。私file.doは次のようなものになります。Perlエラー:非左値サブルーチンコールを

line 2: use BookController; 
line 3: my $bookdb = BookController->new(); 
... 
line 26: $bookdb->dbh = 0; 

をそして、私のBookController.pmは、次のようになります

#!/usr/bin/perl 

package BookController; 
use strict; 

sub new 
{ 
    my $this = shift; 
    my $class = ref($this) || $this; 

    my $self = {}; 
    $self->{DBH} = undef; 

    bless $self, $class; 

    return ($self); 
} 

sub dbh 
{ 
    my $self = shift; 
    $self->{DBH} = shift if (@_); 
    return $self->{DBH}; 
} 

1; 

任意の提案ですか?

答えて

11

subの戻り値を設定しようとしています。したがって、エラーです。実際の方法で判断すると、私はあなたが意味すると思う:

$bookdb->dbh(0); 
+1

私はこれをいつも見るムースを参照してください。いくつかの点を受け入れる。 – Horus

+6

... 'undef'は' 0'よりも意味があります。 – ikegami