Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl模块";未返回真实值“0”;_Perl_Rose Db Object - Fatal编程技术网

Perl模块";未返回真实值“0”;

Perl模块";未返回真实值“0”;,perl,rose-db-object,Perl,Rose Db Object,我遵循CPAN上的命令,设置了三个包 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 ( ... )

我遵循CPAN上的命令,设置了三个包

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');
在应用程序中:

package main;

use Motorcycle;
use Mojolicious::Lite;
无法编译,出现以下错误:

My/DB/Object did not return a true value <eval 2> line 2…
My/DB/Object未返回真值第2行…

问候和感谢。

虽然我不能说我完全理解您想要实现的目标,但您看到的错误是相当常见的。
use
require
中包含的任何文件/模块必须返回“true”值。这通常是通过以
1行结束该文件来实现的,也就是说一个简单的命令为true(而不是0为false)。查看系统中以.pm结尾的任何其他文件,它很可能以这种方式结束

您也可以在中阅读更多内容,或从以下位置阅读此声明:

文件必须作为最后一个返回true 表示成功的声明 执行任何初始化代码, 因此,通常结束这样一个文件 加上“1”,除非你确定它会 否则返回true。但它是 最好只写上“1;”,以防万一 您可以添加更多语句


任何模块中的最后一行应为

1;

@radkrish,我知道你试图通过编辑来帮助我,但是我认为你改变了问题的一些背景。现在已经不清楚一个文件在哪里结束,下一个文件在哪里开始,这一点很重要,因为正如我在回答中所看到的,如果这都是一个文件,OP就不会得到这个错误。你能仔细检查一下吗edit@Joel,代码格式已撤消。对上下文更改感到遗憾,请遵循Rose::DB的示例。1个包装;这是正常的包装惯例。在这种情况下,包My::DB:Object的最后一行init_DB(My::DB->new)应该在初始化时执行并返回真值。这个命令似乎无法运行。首先,我已经发布了一个非常类似的答案。其次,事实并非如此。
use
require
需要一个真实的返回值,以便在加载时进行诊断。是的,大多数模块都以
1结尾但并非所有人都是如此,包括OP,请查看他/她的评论;最后一行是确保返回true。如果附加1;在这种情况下,在提出另一个错误时,不要按照导师的建议行事。@JoelBerger有道理。但是如果你在半夜没有时间,这就是你需要的XXAA。