我是Perl的初学者。我正在尝试使用CPAN Interface module,但我无法使其正常运行。我按照this page上的说明安装了模块。 我正在使用EPIC-Eclipse。我正在尝试实现在同一网站上给出的示例。示例如下: 这是Bouncable界面。
package Bouncable;
use Class::Interface;
&interface; # this actually declares the interface
sub bounce;
sub getBounceBack;
1;
这是实现Bouncable接口的Ball类。
package Ball;
use Class::Interface;
&implements( 'Bouncable' );
sub bounce {
my $self = shift;
print "The ball is bouncing @ ".$self->getBounceBack." strength"
}
sub getBounceBack {
return 10;
}
1;
代码非常简单直接。但我坚持以下错误,我无法摆脱它。
Ball tries to implement non existing interface Bouncable -- Interface Bouncable does not use the interface module. at D:/Eclipse projects/PerlTrial/Bouncable.pm line 4.
Compilation failed in require at (eval 3) line 1.
BEGIN failed--compilation aborted at (eval 3) line 1.
at D:/Eclipse projects/PerlTrial/Ball.pm line 4.
任何帮助表示赞赏!感谢
答案 0 :(得分:6)
模块不喜欢行前面的空白
Bouncable.pm
use strict;
package Bouncable;
use Class::Interface;
interface; # this actually declares the interface
sub bounce;
sub getBounceBack;
1;
Ball.pm
use strict;
package Ball;
use Class::Interface;
implements( 'Bouncable' );
sub bounce {
my $self = shift;
print "The ball is bouncing @ ".$self->getBounceBack." strength"
}
sub getBounceBack {
return 10;
}
1;
答案 1 :(得分:0)
从我的角度来看,它是一个复制和粘贴或Windows换行问题。在接口模块行395中,替换仅删除空格而不是空格。所提到的错误消息立即跟随。
$line =~ s/\ +$//;
应替换为
$line =~ s/\s+$//;
这只是我最好的猜测,不能在这里查看。如果这不起作用,请联系该模块的维护人员。