无法在Perl中使用接口模块

时间:2013-10-02 06:55:26

标签: perl interface perl-module cpan

我是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.

任何帮助表示赞赏!感谢

2 个答案:

答案 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+$//;

这只是我最好的猜测,不能在这里查看。如果这不起作用,请联系该模块的维护人员。