StringBuffer 可以作为 HashMap 中的键吗?
如果是这样,使用 String 和 StringBuffer 作为键有什么区别?
我有以下代码:
sub run_query {
my $name = shift || undef;
my $sql = (defined $name ) ? "select * from table where name = ?" :
"select * from table";
my $sth = $dbh->prepare("$sql");
$sth->execute($name);
}
Run Code Online (Sandbox Code Playgroud)
上面的子例程需要按如下方式工作:如果$name提供,则运行第一个查询,否则从表中获取所有数据.我该如何绑定该name字段?如果它被提供,我想它动态绑定.
我是Perl的新手,在Learning Perl一书中找不到问题的答案.
例如,我有一个像这样的数组:
my @loop=("op1_sel","op2_sel");
Run Code Online (Sandbox Code Playgroud)
和两个哈希表:
my %op1_sel=(
"bibuf","000",
"self","101"
);
my %op2_sel=(
"zero","1",
"temp","0"
);
Run Code Online (Sandbox Code Playgroud)
现在我想在循环中使用变量来循环特定键的哈希表,例如:
foreach(@loop)
{
print ${$_}{"bibuf"} ;
}
Run Code Online (Sandbox Code Playgroud)
但它似乎不起作用,我知道这${$_}部分是错的,任何人都可以告诉我如何解决这个问题?
我编写了一个Perl程序,它将匹配日志文件中的某些单词并将结果存储在数据库中.问题是这个程序适用于小文件,但不适用于文件大小~2GB.是否需要更改尺寸或程序?
use POSIX qw(strftime);
# load module
use DBI;
open( FILE, "/root/temp.log" ) or die "Unable to open logfile:$!\n";
$count_start = 0;
$count_interim = 0;
$count_stop = 0;
while (<FILE>) {
@test = <FILE>;
foreach $line (@test) {
if ( $line =~ m/server start/ ) {
#print "yes\n";
$count_start++;
}
elsif ( $line =~ m/server interim-update/ ) {
$count_stop++;
}
elsif ( $line =~ m/server stop/ ) {
$count_interim++;
}
}
print "$count_start\n";
print "$count_stop\n";
print "$count_interim\n";
$now_string = strftime …Run Code Online (Sandbox Code Playgroud) 我有Solaris 10,我正在尝试运行Perl程序.
我安装了两个perl版本:
/usr/bin/perl 版本5.8.4
和
/usr/local/bin/perl 版本5.12.3
我已经安装了DBI软件包(它已安装在这里/usr/perl5/site_perl/5.8.4/sun4-solaris-64int/auto/DBI/.packlist),我通过执行不同perl版本的Perl程序得到的问题是(在ubuntu中工作正常).
bash-3.00# perl temp.pl Can't locate Time/Piece.pm in @INC (@INC contains: /usr/perl5/5.8.4/lib/sun4- solaris-64int /usr/perl5/5.8.4/lib /usr/perl5/site_perl/5.8.4/sun4-solaris-64int /usr/perl5/site_perl/5.8.4 /usr/perl5/site_perl /usr/perl5/vendor_perl/5.8.4/sun4- solaris-64int /usr/perl5/vendor_perl/5.8.4 /usr/perl5/vendor_perl .) at temp.pl line 4. BEGIN failed--compilation aborted at temp.pl line 4. bash-3.00# /usr/local/bin/perl temp.pl Can't locate DBI.pm in @INC (@INC contains: /usr/local/lib/perl5/site_perl/5.12.3 /sun4-solaris /usr/local/lib/perl5/site_perl/5.12.3 /usr/local/lib/perl5/5.12.3/sun4- solaris /usr/local/lib/perl5/5.12.3 /usr/local/lib/perl5/site_perl .) at temp.pl line5. BEGIN failed--compilation aborted at temp.pl line 5.
我已经尝试了很多方法,但没有得到如何在solaris上运行我的Perl程序.有人可以帮忙吗.
以下是我的计划.实际上它是由@Borodin重新定义的.非常感谢他.
use strict;
use warnings;
use …Run Code Online (Sandbox Code Playgroud) 我有一个包含200多个项目的大型JSON文件.其中有5组数据.每组至少有30个项目.我使用它来区分它们"p" tag,就像"p":"1","p":"2","p":"3","p":"4","p":"5"在json数据中一样.现在我想从每个组中获取2个项目,并且总计10个项目随机订单.
为了便于解释,我设置了一些简单的数据,如下所示."p":"1"在其组中有4个项目,"p":"2"在其组中有4个项目.
现在如何使用随机订单来获取2个项目"p":"1"和2个项目"p":"2"?
$json = <<<ETO
[
{
"a":"apple",
"p":"1"
},
{
"a":"orange",
"p":"1"
},
{
"a":"pear",
"p":"1"
},
{
"a":"banana",
"p":"1"
},
{
"a":"Chauli",
"p":"2"
},
{
"a":"Carrot",
"p":"2"
},
{
"a":"Lettuce",
"p":"2"
},
{
"a":"Potato",
"p":"2"
}
]
ETO;
$data = json_decode($json);
shuffle($data);// some shuffle like this is very ugly...
foreach($data as $row){
$aoo = 1;
$boo = 1;
if($row->p==1){
echo $row->p.': '.$row->a.'<br />';
$aoo++;
if($aoo==2){
break;
}
} …Run Code Online (Sandbox Code Playgroud) 我已经Node.js从我的windows xp os中的网站下载了.我已经通过微软安装程序安装了它.我不知道如何编写我的第一个应用程序,在哪里保存它们以及如何在Windows中执行它们.我有一个node.js命令提示符,但我不能使用它.我搜索了很多,但只有linux和的指令mac.我没有找到任何合适的tutorial例子,我可以从头开始创建节点应用程序.
如果有人可以提供一些documentation或steps任何这样的教程,我可以从中获得帮助,这对我来说会很棒.
my @arr = qw(12 5 78 56 1 785);
my @new_arr = sort { $a <=> $b } @arr;
print @new_arr . "\n\n" ; #### print 6
print @new_arr , "\n\n" ; #### print value in short order
Run Code Online (Sandbox Code Playgroud)
嗨,有谁能告诉我为什么它打印不同的2值.
Thx,Vijay
我需要使用Perl代码生成XML输出.我正在尝试不使用任何库,因为它是非常简单的临时XML,可供流程中的另一个步骤使用.
通过我的perl代码,我需要编写类似于导致解析器错误的内容,以及以下XML输出:"url http://www.123.42 1345&4686=userid:fs/fsfsf"
<text>url http://www.123.42 1345&4686=userid:fs/fsfsf </text>
Run Code Online (Sandbox Code Playgroud)
所以我试图写,"url \<![CDATA[<http://www.123.42 1345&4686=userid:fs/fsfsf]\>"但这也导致解析器错误和以下输出:
<text>URL <![CDATA[http://www.123.42 1345&4686=userid:fs/fsfsf]></text>
Run Code Online (Sandbox Code Playgroud)
我想得到这个:
<text>URL <![CDATA[http://www.123.42 1345&4686=userid:fs/fsfsf]></text>
Run Code Online (Sandbox Code Playgroud)
如何使XML转义为"<"字符?
在Perl脚本中获取一些我不太了解的奇怪行为.我试图将我的一些魔术字符串文字变成可以更容易修改的变量.
我的子程序中有一个参数叫做$in_feature.现在它的价值很简单"in_feature".我可以把它打印出来看起来很好.到现在为止还挺好...
但是这段代码失败了:
if ($in_feature != "" && !$blockModel->is_field($in_feature))
{
print "ERROR: was expecting to find a variable in the block model called $in_feature.\n";
return;
}
Run Code Online (Sandbox Code Playgroud)
如果我删除字符串比较并将方法调用更改回字符串文字,它按预期工作.
if (!$blockModel->is_field("in_feature"))
{
print "ERROR: was expecting to find a variable in the block model called $in_feature.\n";
return;
}
Run Code Online (Sandbox Code Playgroud)
所以变量是某种字符串,等于空字符串,不能用来代替字符串?!?这是为什么?
我使用ActivePerl脚本接收CSV文件并创建加载到数据库中的XML文件.这些是用户ID数据库条目,名称,地址等.我们一直使用家庭电话号码字段来生成初始密码(我们鼓励用户立即更改!).手机的扩散意味着我有一群人没有家用电话,所以我想在家庭电话领域为空时使用手机领域.
我的输入字段如下所示:
# 0 Firstname
# 1 Lastname
# 2 VP (voicepart)
# 3 Address
# 4 City
# 5 State
# 6 Zip
# 7 Phone
# 8 Mobile
# 9 Email
Run Code Online (Sandbox Code Playgroud)
这是我用来创建密码的Perl代码 - 当字段7中有值时,create_password子例程正在工作:
my $pass_word = '';
my $pass_word = create_password($fields[7]);
if (my $pass_word = '') {
print "Use the cell phone number \n";
my $pass_word = create_password($fields[8]);
}
Run Code Online (Sandbox Code Playgroud)
"打印"声明是告诉我它认为它正在做什么.
这看起来像我应该工作,但"if"的声明永远不会发生.Print语句不打印,只有字段8中的值的任何人都会生成密码.我测试$ pass_word的值的方式一定有问题,但我看不到它.我应该测试$ fields [7]和$ fields [8]的值而不是变量值吗?如果这不起作用,你如何测试Perl变量的空值?
由于某些我无法理解的原因,当我在执行它时,这个程序会保持循环CMD.
#include <stdio.h>
int main() {
char array [] = {'b','f','r','o','a','u','v','t','o','\0'};
int grootteArray = sizeof(array);
int grootteChar = sizeof(char);
int lengteArray = grootteArray / grootteChar;
int i;
for (i = 0; i < lengteArray + 1; i + 2) {
printf("%c", array[i]);
}
return 0;
}
Run Code Online (Sandbox Code Playgroud) 我已经编写了一些jQuery代码来切换div.它正在工作,但我需要它立即切换下一个div,这是没有发生的.
$(document).ready(function() {
$('.nav-toggle').click(function() {
var id = $(this).attr('name');
$('#tab' + id).slideToggle('slow');
return false;
});
});
Run Code Online (Sandbox Code Playgroud)