小编w.k*_*w.k的帖子

为什么DBIx :: Class不能创建多对多访问器?

虽然创建从数据库架构表之间的许多一对多的关系并不创建.

这是一个主要问题吗?

是否有可能从表结构中检测到存在多对多关系并自动在模式类中创建相应的代码?

perl dbix-class

4
推荐指数
1
解决办法
855
查看次数

如何使用Perl中基于区域设置的小数分隔符格式化数字?

我寻求在perl脚本中使用基于区域设置的小数分隔符的方法.目前我看不到更好的解决方案而不仅仅是s/\./,/在特定的地方,但它很难看,我希望有更清洁的解决方案.

perl locale

4
推荐指数
1
解决办法
2887
查看次数

如何在Perl中确定Mysql连接ID?

我想了解,我的模块是否与MySQL共享DBI连接或没有.我想确定他们的连接ID.可能有更好的解决方案(我想知道它们),但第一个问题仍然是知道连接ID.

mysql perl dbi

4
推荐指数
1
解决办法
692
查看次数

如何以Mooseish方式声明2个从属属性?

在我的对象构造函数中,我有一条语句可以同时初始化两个属性:

($self->{token}, $self->{token_start}) = $self->_get_authorized_token();
Run Code Online (Sandbox Code Playgroud)

所以我得到了令牌,并且它在一条语句中一起开始了。

现在我尝试移植我的模块以使用Moo(se),在这里我不知道如何同时设置这两个绑定属性?一些伪代码将是这样的:

has qw/token token_start/ => (
    is  => 'rw',
    default => shift->_get_authorized_token(); 
);
Run Code Online (Sandbox Code Playgroud)

但是如何以Moo(se)ish方式声明2个绑定属性?


编辑。我展示了该方法的代码_get_authorized_token,也许会带来一些想法:

sub _get_authorized_token {
    my $self = shift;
    my $postData = { 'apikey' => $self->{key} };
    my $url = $self->{base_url} . '/seller';
    my $xml = $self->_post(url => $url,
                            postdata => $postData,
                        );
    my $ref = XMLin($xml, SuppressEmpty => '' );
    my $time = $ref->{Notification_Datetime};
    my $token = $ref->{Notification_Data}{body}{token};
    return ($token, $time); 
}
Run Code Online (Sandbox Code Playgroud)

perl moose moo

4
推荐指数
1
解决办法
232
查看次数

为什么'1.66'在双字段中与MySQL中的1.66不匹配?

我想知道,为什么我在使用DBI的Perl代码中形成的查询没有返回正确的记录.我有简单的查询,如:

my $query = "SELECT id FROM table WHERE title = ? AND price = ?";
Run Code Online (Sandbox Code Playgroud)

我执行它像:

my $sth = $dbh->prepare( $query );
my ($id) = $dbh->selectcol_arrayref( $sth, undef, $title, $price );
Run Code Online (Sandbox Code Playgroud)

大部分时间一切正常,但在一些罕见的情况下,我没有得到我预期的结果.所以我也试过CLI.带有可疑值的Fulled查询:

SELECT id FROM table WHERE title = 'Some title' AND price = 1.66;
Run Code Online (Sandbox Code Playgroud)

并得到了想要的记录.之后我也引用了价格值:

SELECT id FROM table WHERE title = 'Some title' AND price = '1.66';
Run Code Online (Sandbox Code Playgroud)

结果得到记录.

之后我尝试了其他报价价格,比如'1.67',他们工作得很好.

这有什么问题?为什么这么简单的查询失败 为了重现行为,我将简单的模式和查询放到sqlfiddle,因为您可能会看到简单查询SELECT * FROM Table1 WHERE price = '1.66' OR price …

mysql perl dbi

4
推荐指数
1
解决办法
106
查看次数

如何使用查询的起始值创建序列?

在数据库迁移脚本(psql)中,我想从表中查询的特定值开始创建序列,例如:

CREATE SEQUENCE book_id_seq START ( SELECT MAX(id) + 1 FROM book.book );
Run Code Online (Sandbox Code Playgroud)

或尝试设置\set start (SELECT MAX(id) + 1 FROM book.book)为使用变量,例如:

CREATE SEQUENCE book_id_seq START :'start';
Run Code Online (Sandbox Code Playgroud)

但使用\set并没有解释查询。

设置变量的另一种方法也不起作用

start := SELECT MAX(id) + 1 FROM book.book;
Run Code Online (Sandbox Code Playgroud)

给出了错误:

ERROR:  syntax error at or near ":="
LINE 1: start := SELECT MAX(id) + 1 FROM book.book;
Run Code Online (Sandbox Code Playgroud)

选择值 INTO 也没有帮助,因为访问需要另一个 SELECT 查询。

使用静态值效果很好:

\set start 33
CREATE SEQUENCE book_id_seq START :'start'::int;
Run Code Online (Sandbox Code Playgroud)

如何使用动态起始值?

Postgres 9.6

sql postgresql psql

4
推荐指数
1
解决办法
4604
查看次数

如何为模处理人员提供更多上下文?

在某些功能必须执行的情况下,我想在错误消息中包含更多上下文die。在某些情况下,我可以提供它,而在另一些情况下,我找不到好的方法。例如,使用RaiseError连接Postgres 的选项,每次失败都会得到异常,但是我无法为这些错误提供更多的上下文信息。我尝试使用die-handler,但是我无法找出一种合理的方法来至少包括被称为subroutine的参数:

try {
  x( 'y' );
} catch {
  say "CATCHED error: $_";
};

sub _die_handler {
  my @caller = caller(1);
  say "@caller"; # how to access @_ for this frame 
  die @_;
}

sub x {
 local $SIG{__DIE__} = \&_die_handler;
 die;
}

Run Code Online (Sandbox Code Playgroud)

我如何在上面的示例中看到x以“ y”作为参数调用的示例?

如果我尚未@_在子程序中进行修改,可以从我的子程序中访问它_die_handler吗?还是可以事先向处理程序提供一些数据?

我现在看到两个选择:

  • 通过一些全局变量,在可能发生某些错误的情况下,我总是事先填充所需的数据
  • 使用带有die_handler方法的对象

更好的方法呢?

perl exception

4
推荐指数
1
解决办法
59
查看次数

如何计算两个方向的表单字段值?

我尝试构建项目的表单,我可以在其中放置不同的公式来计算某些字段.

主要问题:我想让公式双向工作,例如

  • 当用户输入项目时price,表格应sum根据price(price*qty)计算.
  • 当用户输入时sum,表单应price根据sum(sum/ qty)计算项目.

我找到了Calcx - 用于构建计算表单的强大而强大的jQuery插件,并根据我的需要修改了其中一个示例,但是没有想到有可能以某种方式让它像上面的描述中那样工作.

还有一些其他问题我找不到解决方案:

  • 具有公式和集的字段readonly: false应该是可编辑的.我的示例中的字段.sum仍然不可编辑.为什么?
  • 我添加+-按钮周围qty已场内,以增量/ DECR功能,但让他们正常工作,我不得不分离Calcx功能,并再次装即可.是否有更简单的方法来实现这一目标?

免责声明我的问题的解决方案也可能涉及除Calcx之外的其他技术.也许某些插件或框架有更好的工具来满足我的需求.

对于历史记录,我也在这里添加了代码示例,但是使用它可能更适合查看JSfiddle

<!DOCTYPE html>
<html>
<head>
  <title>testc calcx</title>
  <meta charset=utf-8>
  <meta name=description content="testime">
  <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
  <script type="text/javascript" src="/js/jquery-calx-1.1.9.js"></script>

<style type="text/css">
  .plusminus {
    font-weight: bold;
    font-family: monospace;
    font-size: 1.3em;
    border: 1px green solid;
    padding: …
Run Code Online (Sandbox Code Playgroud)

javascript forms jquery

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

使用带有斜杠 // 或引号 ''|"" 的拆分模式有什么区别?

有时我会被非常基本的事情咬伤。我记得split基于PATTERN用作字符串或正则表达式有不同的行为。现在阅读文档似乎没有这样的区别,在整个文档中,只有一种情况(awk-like 行为),其中模式以带引号的字符串形式呈现,在其他所有示例中,模式都在斜杠之间,作为正则表达式。尽管如此,我还是在这里那里找到了示例/教程,例如,哪里提到了基于字符、字符串和模式的拆分的区别。尽管如此,在测试中,除了在斜杠上拆分使用引号 ( split '/', $some_string)更好之外,我没有发现更多差异。

我今天的具体问题是在点上拆分文件名.并期望在字符串模式上拆分。令我惊讶的'.'是,该模式仍被视为正则表达式,因此以下脚本无法实现此目的:

use strict; use warnings; use 5.010;

my ( @x ) = split '.', 'dir/some_file.ext';
say "@x";
Run Code Online (Sandbox Code Playgroud)

我知道,如何修复我的脚本(使用正则表达式模式),但我仍然不知道,使用模式作为字符串 ( '.') 与使用正则表达式 ( /./) 有什么区别?

regex string perl split

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

为什么不正确评估转储器输出?

我尝试eval输出Dumper非常简单的 hashref,其中两个键具有相同的值(引用另一个哈希):

#!/usr/bin/env perl

use strict; use warnings;
use Data::Dumper;

my $foo = { data => 1 };
my $boo = {
  x => $foo,
  y => $foo,
};

my $VAR1;
my $bar = eval( Dumper( $boo ) );

print Dumper( $boo );
print Dumper( $bar ); 
Run Code Online (Sandbox Code Playgroud)

我希望$booand$bar具有相同的结构,但 eval 似乎没有$VAR1->{'x'}正确解决内部引用,我希望最后两行打印相同的字符串:

$VAR1 = {
          'x' => {
                   'data' => 1
                 },
          'y' => $VAR1->{'x'}
        };
Run Code Online (Sandbox Code Playgroud)

但是第二个有xy未定义(取决于以字面形式引用的内容):

$VAR1 …
Run Code Online (Sandbox Code Playgroud)

perl eval

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

标签 统计

perl ×8

dbi ×2

mysql ×2

dbix-class ×1

eval ×1

exception ×1

forms ×1

javascript ×1

jquery ×1

locale ×1

moo ×1

moose ×1

postgresql ×1

psql ×1

regex ×1

split ×1

sql ×1

string ×1