小编Jan*_*kie的帖子

使用三元运算符分配?

我在Perl 5.8上,我需要指定一个默认值.我最终这样做了:

if ($model->test) {
    $review = "1"
} else {
    $review = ''
}
Run Code Online (Sandbox Code Playgroud)

$model->test将是"1"或未定义.如果有某些内容$model->test,则将$review"1"设置为等于''.

因为它不是Perl 5.10我不能使用新的时髦定义的或运算符.我的第一反应是使用这样的三元运算符......

defined($model->test) ? $review = "1" : $review = '';
Run Code Online (Sandbox Code Playgroud)

但那也不起作用.

有谁知道如何更有效地分配这个?珍妮

variables perl ternary-operator

26
推荐指数
4
解决办法
3万
查看次数

在OOP Perl中调用子例程

在查看我接手的一些代码时,我遇到了这一行:

 my @files = My::Module::DB::raw_info->search_like(customer_handle => $config->{client}, feed => $config->{site}, arrival =>"$date")
Run Code Online (Sandbox Code Playgroud)

我知道这会从一个名为的包中返回一个数组My::Module::DB::raw_info.

我不确定(我只是学习OOP),是->search_like指的是什么.

我没有将其视为变量或子程序 My::Module::DB::raw_info

任何提示将不胜感激.我才开始学习这些东西.这就像在火中沐浴.(我知道我以后会更开心)Yikes!

oop perl perl-module package

7
推荐指数
2
解决办法
428
查看次数

MySQL文本类型并使用更大的大小.它有效吗?

我正在设计一个存储文档的数据库.其中一些文件的时钟刚刚超过64kb,没有一个大于128kb.似乎我唯一的办法是指定我的文本类型,MEDIUMTEXT其最大大小为16MB.这对我正在做的事情来说似乎有些过分,特别是因为我每天要存储大约一百份文件.我想我的问题是,由于MEDIUMTEXT比TEXT大得多,我是否会遇到性能损失.我不太了解MySQL内部,知道磁盘或内存上是否有一些奇怪的分配问题会让我感到困惑.当然,我们可以在像MongoDB这样现代化的东西中完成所有这些工作,但我无法对此进行签名.:-(
如果将来有人正在努力解决这个问题,我想我会注意到MySQL中的文本类型及其最大尺寸以供参考.

TINYTEXT 256 bytes
TEXT 65,535 bytes ~64kb
MEDIUMTEXT 16,777,215 bytes ~16MB
LONGTEXT 4,294,967,295 bytes ~4GB
Run Code Online (Sandbox Code Playgroud)

任何人的建议将不胜感激.珍妮

mysql database field

7
推荐指数
1
解决办法
3174
查看次数

在Template Toolkit中为哈希添加值

我有一个哈希,我在Template Toolkit中迭代了它的密钥.这个例子如下......

<SELECT NAME="SelectList_[% feed.num %]" ID="SelectList_[% feed.num %]" SIZE="5" style="width: 250px;" MULTIPLE>
  [% FOREACH xvar = feed.xvars.keys %]
     <OPTION VALUE="[% xvar %]">[% xvar %]</OPTION>
  [% END %]
     <OPTION VALUE="X_File_Name">X_File_Name</OPTION>
</SELECT>
Run Code Online (Sandbox Code Playgroud)

我需要做的是按字母顺序排列这个SELECT列表(使用sort,我知道该怎么做.问题是

<OPTION VALUE="X_File_Name">X_File_Name</OPTION>
Run Code Online (Sandbox Code Playgroud)

线.我希望只将值"X_File_Name"添加到feed.xvars哈希.像这样......

[% feed.xvars = { "X_File_Name" => "1" } %] 
Run Code Online (Sandbox Code Playgroud)

希望这会将值添加到哈希值(而不是删除它).没有这样的运气.查看模板工具包书和谷歌搜索也不会产生任何结果.有人知道怎么做吗?

perl hash

6
推荐指数
1
解决办法
1954
查看次数

如何在新窗口中设置WATIR焦点

我是WATIR测试的新手(我喜欢它!)并且已经碰到了如何将我的WATIR脚本重新聚焦到新打开的窗口的问题.这是我的(简化)脚本....

#!/usr/bin/ruby
require 'rubygems'
require 'watir-webdriver'
browser=Watir::Browser.new
browser.goto("http://0:3050")

browser.text_field(:name,"userkey300203830").set("OKJHNB")
browser.button(:id, "interview48").click

puts "Expected Result:"
puts "A successful display of cars"

if browser.window(:title=>"300203830").exists?
   puts " Test passed. New window opened!"
else
   puts " Test Failed! No window found"
end
Run Code Online (Sandbox Code Playgroud)

这一切都可以直到最后.单击"interview48"键后,将打开一个标题为"300203830"的新窗口.看起来我找到了但我现在还不知道如何关注那个窗口.

ruby automated-tests watir webautomation watir-webdriver

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

道场:道场onblur事件

我有一个使用dojo 1.5的表单设置.我正在使用dijit.form.ComboBox和dijit.form.TextBox

Combobox具有"汽车","自行车","摩托车"等价值,而文本框则是Combobox的形容词.因此,无论Combobox中的内容是什么,如果ComboBox确实有值,那么必须在TextBox中填充一些内容.(可选)如果ComboBox中没有任何内容,则TextBox中没有任何内容可以正常使用.事实上,如果Combobox中没有某些内容,则文本框中必须没有任何内容.

在常规编码中,我只需在文本框中使用onBlur事件转到一个函数,该函数检查ComboBox是否有值.我在dojo中看到这不起作用......代码示例如下......

Vehicle:
    <input dojoType="dijit.form.ComboBox"
      store="xvarStore"
      value=""
      searchAttr="name"
      name="vehicle_1"
      id="vehicle_1"
    />
 Descriptor:
<input type="text"
                dojoType="dijit.form.TextBox"
                value=""
                class=lighttext
                style="width:350px;height:19px"
                id="filter_value_1"
                name="filter_value_1"
                />
Run Code Online (Sandbox Code Playgroud)

我最初的尝试是在描述符的<input>标记内添加onBlur,但发现这不起作用.

Dojo如何处理这个?是通过dojo.connect参数吗?即使在上面的示例中,组合框具有id"vehicle_1"并且文本框具有id"filter_value_1",但是可以有许多组合框和文本框顺序向上编号.(vehicle_2,vehicle_3等)

任何建议或资源链接将不胜感激.珍妮

javascript dojo onblur dijit.form dom-events

5
推荐指数
1
解决办法
1万
查看次数

为什么这行Perl本身只包含一个变量?

我更喜欢perl,但是我对我在一个模块子程序中看到的一条线路有疑问.

my $var = 1;
....
....
....
....
$var;
Run Code Online (Sandbox Code Playgroud)

抛出我的只是看到这$var一切都在一条线上.这只是回归的迂回方式1吗?

非常感谢!

variables perl subroutine

3
推荐指数
2
解决办法
171
查看次数

无法通过包子类DBI定位对象方法

这是我第一次尝试使用perl进行子类化,我想知道为什么我会得到这个简单的错误...
"无法在/home/dblibs/WebDB.pm中通过包"WebDB :: st"找到对象方法"prepare"第19行." 它似乎找到了模块WebDB ok,但没有找到~st的prepare子例程
首先这里是我的包(两个包都在一个文件中,WebDB.pm)

package WebDB;
use strict;
use DBI;

sub connect {
    my $dbh = (DBI->connect ("DBI:mysql:test:127.0.0.1", "root","",
                    { PrintError => 1, RaiseError => 0 }));
    return bless $dbh, 'WebDB::st';
}

package WebDB::st;
our @ISA = qw(::st);
sub prepare {
    my ($self, $str, @args) = @_;
    $self->SUPER::prepare("/* userid:$ENV{USER} */ $str", @args);
}


1;
Run Code Online (Sandbox Code Playgroud)

我也尝试用"use base'WebDB'"替换"我们的@ISA = qw(;; st)"和同样的问题.我认为这可能是我非常简单的事情.非常感谢!简

oop perl subclass dbi

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

Perl:计算复杂数据结构中的元素

我是复杂数据结构的新手.我有点理解他们背后的想法,但是在获取数据方面遇到了一些困难.我通过使用Data :: Dumper找到了当前问题孩子的结构....

$VAR1 = {
      '4' => {
               'engine_coded' => 0,
               'name' => 'FILTER_1',
               'filter_actions' => {
                                     'X_Override_Queue_Level' => 'Value'
                                   },
               'filter_criteria' => [
                                      [
                                        'X_Charge',
                                        '=',
                                        'X_CHARGE_1'
                                      ]
                                    ]
             }
    };
Run Code Online (Sandbox Code Playgroud)

我需要做的是确保给定一个过滤器名称(在本例中为"4"),"name"有一个值,以及"filter_actions"和"filter_criteria".

任何人都知道如何最好地完成这个?非常感谢!珍妮

arrays perl hash perl-data-structures

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

在字符串eq中使用未初始化的值.左还是右?

我正在清理一些代码,我在服务器日志中看到perl错误是......

Use of uninitialized value in string eq at .....
Run Code Online (Sandbox Code Playgroud)

看代码这条线看起来像这样....

if ($level1 eq $level2) {
Run Code Online (Sandbox Code Playgroud)

好,可以.我想我的问题是这个.问题是$ level1还是$ level2?

我写了一个快速测试试图在本地复制它,看起来像这样....

#!/usr/bin/perl
use warnings;
my $a;
my $b;

if ($a eq $b){
    print "....";
}
Run Code Online (Sandbox Code Playgroud)

而且我得到了更多信息错误.

Use of uninitialized value $a in string eq at ./warntest.cgi line 7.
Use of uninitialized value $b in string eq at ./warntest.cgi line 7.
Run Code Online (Sandbox Code Playgroud)

这似乎是不一致的行为.有人有线索吗?珍妮

perl initialization

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