4

我是 Perl 新手,我一直在学习本教程http://qntm.org/files/perl/perl.html

无论如何,我正在创建一个包含矩阵并执行各种基本操作(即高斯消除、rref、后退、行列式等)的包。我让我的构造函数接收了一个引用列表,但是我在祝福它们时遇到了一些麻烦,所以我以后可以访问它们。到目前为止我的代码:

主要.pl:

use strict;
use warnings;
use Matrix;

my @list = ([1,1,1],[2,2,2]);
my $matrix = Matrix->new(@list);

$matrix->test();

矩阵.pm:

package Matrix;
    sub new(){
        my $class = shift;
        my $self = [];

        my @params = @_;
        $self = \@params;

        print scalar @{$self->[1]}; #just testing some output...(outputs 3 as expected)

        bless $self,$class;

        return $self;
    }

    sub test(){
        print @{$self->[1]}; #does not output anything
    }

1;

我假设问题是 $self 所指的引用没有得到祝福,但我不知道该怎么做。任何帮助,将不胜感激。

谢谢

4

1 回答 1

7

您忘记实际定义$selfin test; 它不会自动为您提供。这就是为什么您应该始终放入use warnings; use strict;每个 Perl 源文件的原因:这样编译器就会告诉您这些错误。(另外,用sub new()代替sub new和 for 也没有任何意义;函数原型不仅是错误的,而且在用作方法test时会被完全忽略,即应该如何使用。)newnew

于 2013-08-13T23:02:42.100 回答