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 将方法添加到生成的结果类_Perl_Dbix Class - Fatal编程技术网

Perl 将方法添加到生成的结果类

Perl 将方法添加到生成的结果类,perl,dbix-class,Perl,Dbix Class,我使用DBIx::Class::Schema::Loader从数据库模式生成(并不断重新生成)结果类 是否有一种idomatic方法向生成的类添加方法 我目前所做的是在使用结果类的代码附近定义其他方法: package Some::Package::Using::Result::Classes; use My::Schema::Result::Hello; ... 1; package My::Schema::Result::Hello; sub str { my $self = sh

我使用
DBIx::Class::Schema::Loader
从数据库模式生成(并不断重新生成)结果类

是否有一种idomatic方法向生成的类添加方法

我目前所做的是在使用结果类的代码附近定义其他方法:

package Some::Package::Using::Result::Classes;
use My::Schema::Result::Hello;

...
1;

package My::Schema::Result::Hello;

sub str {
  my $self = shift;
  sprintf("Hello: %s, %d", $self->name, $self->age);
}
1;

(如您所见,我正在尝试添加一个类似于函数的
toString()
-like函数。)

我不知道这是否惯用,但它更紧凑:

*My::Schema::Result::Hello::str = sub
    my $self = shift;
    sprintf("Hello: %s, %d", $self->name, $self->age);
};

如果查看生成的结果类的顶部,您将看到此注释

# Created by DBIx::Class::Schema::Loader
# DO NOT MODIFY THE FIRST PART OF THIS FILE
注意,它说您不应该修改文件的“第一部分”

在文件的底部,您将看到这个

# Created by DBIx::Class::Schema::Loader v0.07039 @ 2014-01-30 20:13:57
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:3eYA3YhJdL90HQRfNN07EA

# You can replace this text with custom code or comments, and it will be preserved on regeneration

因此,只要将结果类文件放在包含MD5哈希的行下,就可以将任何代码添加到结果类文件中。当您重新生成类时,您放在那里的任何内容都将保留在那里。

谢谢!我不知道那个语法。那是怎么回事?*?这是一个