我是Perl的新手,我一直在学习本教程http://qntm.org/files/perl/perl.html
无论如何,我正在努力创建一个包含矩阵的包,并将执行各种基本操作(即高斯消除,rref,反向子,确定性等)。我有我的构造函数列入引用列表,但是我有一些麻烦祝福他们所以我以后可以访问它们。到目前为止我的代码:
main.pl:
use strict;
use warnings;
use Matrix;
my @list = ([1,1,1],[2,2,2]);
my $matrix = Matrix->new(@list);
$matrix->test();
Matrix.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所指的引用并没有被祝福,但我不知道如何做到这一点。任何帮助将不胜感激。
由于
答案 0 :(得分:7)
您忘记在$self
中实际定义test
;它不会自动为您服务。这就是为什么你应该总是将use warnings; use strict;
放在每个Perl源文件中:这样编译器就会告诉你这些错误。 (另外,写sub new()
代替sub new
没有意义,test
也是如此;函数原型不仅错误,而且在new
时会被忽略。用作方法,即如何使用new
。)