Perl模块"没有返回真正的价值"

Wei*_*yan 6 perl rose-db-object

我在CPAN上遵循Rose :: DB :: Object教程并设置了三个包.

package My::DB::Object;
use My::DB;
use base qw(Rose::DB::Object);
sub init_db { My::DB->new }

package My::DB;
use base qw(Rose::DB);
...

package Motorcycle;
use base 'My::DB::Object';

__PACKAGE__->meta->setup
(
  ...
);

__PACKAGE__->meta->make_manager_class('motorcycles');
Run Code Online (Sandbox Code Playgroud)

在申请中:

package main;

use Motorcycle;
use Mojolicious::Lite;
Run Code Online (Sandbox Code Playgroud)

无法使用此错误进行编译:

My/DB/Object did not return a true value <eval 2> line 2…
Run Code Online (Sandbox Code Playgroud)

问候和感谢.

Joe*_*ger 23

虽然我不能说我完全理解你想要完成的是什么,但你看到的错误是一个相当普遍的错误.任何包含在a userequire必须返回"true"值的文件/模块.这通常是通过用行结束该文件来完成的,1;也就是说只是一个为真的命令(而不是0为假).查看系统上以.pm结尾的任何其他文件,它很可能以这种方式结束.

您还可以阅读更多信息perldoc perlmod,或者有以下声明perldoc -f require:

该文件必须返回true作为表示成功执行任何初始化代码的最后一个语句,因此通常以"1"结束这样的文件.除非你确定否则它会恢复正常.但是,如果添加更多语句,最好只设置"1;".


小智 10

任何模块的最后一行应该是

1;
Run Code Online (Sandbox Code Playgroud)