1

我是 Perl 的初学者。我正在尝试使用CPAN 接口模块,但我无法使其工作。我已按照 此页面上的说明安装了模块。我正在使用 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.

任何帮助表示赞赏!谢谢

4

2 回答 2

6

该模块不喜欢其行前的空白

弹跳.pm

use strict;
package Bouncable;

use Class::Interface;
interface;   # this actually declares the interface

sub bounce;
sub getBounceBack;

1;

球.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;
于 2013-10-02T07:52:47.177 回答
0

从我的角度来看,它是复制和粘贴或 Windows 换行问题。在接口模块第 395 行中,替换只删除空格而不是空格。提到的错误消息立即出现。

$line =~ s/\ +$//;

应该替换为

$line =~ s/\s+$//;

这只是我的最佳猜测,无法在这里查看。如果这不起作用,请联系该模块的维护者。

于 2013-10-02T08:00:45.450 回答