2012-03-04 28 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 2012-03-04 04:22:09

+6

...雖然'undef'比'0'更有意義。 – ikegami 2012-03-04 04:39:12