小编Har*_*ens的帖子

与mod_perl2 moose应用程序的DB连接太多

我有一个基于mod_perl2的Web应用程序,需要连接到mysql数据库.我已经以驼鹿角色实现了SQL连接细节.

简化后,该角色如下所示:

package Project::Role::SQLConnection;

use Moose::Role;
use DBIx::Connector;

has 'connection' => (is => 'rw', lazy_build => 1);
has 'dbh' => (is => 'rw', lazy_build => 1);
has 'db'    => ( is => 'rw', default => 'alcatelRSA');
has 'port'  => ( is => 'rw', default => 3306);
has 'host'  => ( is => 'rw', default => '10.125.1.21');
has 'user'  => ( is => 'rw', default => 'tools');
has 'pwd'   => ( is => 'rw', default => 'alcatel');


#make sure connection is …
Run Code Online (Sandbox Code Playgroud)

perl moose mod-perl2

3
推荐指数
1
解决办法
587
查看次数

在perl中重写递归函数,以便可以在列表上下文中使用它

考虑在Moose :: Cookbook :: Basics :: Recipe3中开发的二叉树

要按预先检索所有节点,我可以将以下子例程添加到BinaryTree包中

sub pre_order {
  my ($self,$aref) = @_;

  push @$aref, $self->node;

  pre_order($self->left,$aref) if $self->has_left;
  pre_order($self->right,$aref) if $self->has_right;
}
Run Code Online (Sandbox Code Playgroud)

sub必须像这样使用:

my $btree = BinaryTree->new;
#add some nodes

#then later...
my @nodes_in_preorder;
$btree->pre_order(\@nodes_in_preorder);
Run Code Online (Sandbox Code Playgroud)

我如何更改子程序才能使用如下语法:

my @nodes_in_preorder = $btree->pre_order();
Run Code Online (Sandbox Code Playgroud)

为了能够做的事情

for ($btree->pre_order()) { #bla bla } 
Run Code Online (Sandbox Code Playgroud)

稍后的.

这有意义吗,还是我迂腐?

recursion perl

3
推荐指数
1
解决办法
703
查看次数

具有类型约束检查的Set :: Object

我试图扩展Set :: Object,以便在插入对象时允许类型约束检查.到目前为止我的班级看起来像这样:

package My::Set::Object;

use strict;
use warnings;

use Moose;
use MooseX::NonMoose;
extends 'Set::Object';

has type => (is => 'ro', isa => 'Str', required => 1);

before [ qw(insert invert intersection union) ] => sub {
my ($self,$list) = @_;

for (@$list) {
    confess "Only ",$self->type," objects are allowed " unless $_->does($self->type);
}
};

no Moose;
__PACKAGE__->meta->make_immutable;
Run Code Online (Sandbox Code Playgroud)

不幸的是,当我执行以下示例对象构造时,似乎构造参数也传递给Set :: Object

my $set = My::Set::Object->new(type => 'Foo::Bar');
Run Code Online (Sandbox Code Playgroud)

打印出set的内容后,我发现"type"和"Foo :: Bar"是该组的成员.

我怎样才能解决这个问题?或者是否有更简单的方法可以做到这一点?

perl moose

2
推荐指数
1
解决办法
236
查看次数

标签 统计

perl ×3

moose ×2

mod-perl2 ×1

recursion ×1