我在Postgres服务器上有以下数据库表:
id date Product Sales
1245 01/04/2013 Toys 1000
1245 01/04/2013 Toys 2000
1231 01/02/2013 Bicycle 50000
456461 01/01/2014 Bananas 4546
Run Code Online (Sandbox Code Playgroud)
我想创建一个查询,给出SUM了的Sales按月份和年份如下列并对结果进行分组:
Apr 2013 3000 Toys
Feb 2013 50000 Bicycle
Jan 2014 4546 Bananas
Run Code Online (Sandbox Code Playgroud)
有一个简单的方法吗?
我有两个字符串数组,我想比较相等:
my @array1 = ("part1", "part2", "part3", "part4");
my @array2 = ("part1", "PART2", "part3", "part4");
Run Code Online (Sandbox Code Playgroud)
是否有内置的方法来比较数组,就像标量一样?我试过了:
if (@array1 == @array2) {...}
Run Code Online (Sandbox Code Playgroud)
但它只是在标量上下文中评估每个数组,因此比较了每个数组的长度.
我可以使用自己的函数来完成它,但它看起来像是一个低级操作,应该有一个内置的方法来做它.在那儿?
编辑:遗憾的是,我无法访问5.10+或可选组件.
如何在使用以下程序中的哈希计算实际列表的顺序后维护实际列表的顺序?例如,<DATA>是
a
b
e
a
c
d
a
c
d
b
etc.
Run Code Online (Sandbox Code Playgroud)
使用哈希,我计算每个元素的出现次数.
我想要的是:
a 3
b 2
e 1
c 2
d 2
Run Code Online (Sandbox Code Playgroud)
但是以下程序显示了我的情况.
my (%count, $line, @array_1, @array_2);
while ($line = <DATA>) {
$count{$line}++ if ( $line =~ /\S/ );
}
@array_1 = keys(%count);
@array_2 = values(%count);
for(my $i=0; $i<$#array_1; $i++)
{
print "$array_1[$i]\t $array_2[$i]";
}
Run Code Online (Sandbox Code Playgroud) 从Perl 5.10开始,现在可以在语义上或在构造中$_明确地对上下文变量进行范围限定.my $_;given / when
有没有人发现词汇的好用$_?它是否使任何构造更简单/更安全/更快?
如果情况变得更复杂呢?词法是否在$_您的代码中引入了任何错误?(因为写入的控制结构$_将使用词法版本,如果它在范围内,如果它包含任何子例程调用(由于动态范围的丢失),这可以改变代码的行为)
最后,我想构建一个清单,明确何时$_用作词汇,全局,或者根本不重要.
注意:由于perl5-5.24这些实验性特征不再是perl的一部分.
$hash = { 'Man' => 'Bill',
'Woman' => 'Mary,
'Dog' => 'Ben'
};
Run Code Online (Sandbox Code Playgroud)
Perl的"匿名哈希"究竟做了什么?
我目前正在为我们的服务器编写一个自动备份脚本.我在脚本中使用UNIX tar命令来存档代码存储库.
在我的PERL脚本中,我使用tar命令,如下所示:
system("tar -jcpf $destPath/$string.tar.bz2 -X $exclusionFile $targetPath");
Run Code Online (Sandbox Code Playgroud)
我想在提取tar存档时保留文件所有权.我试图列出tar存档内容
tar -jtvf
Run Code Online (Sandbox Code Playgroud)
并且列表包含每个文件的正确文件所有权,但在提取存档时,文件所有权将更改为当前用户.
有没有办法提取tar存档并保留每个文件的原始文件所有权?
我从文件中读取有问题.每当我需要从文件中读取时,我都会这样做:
main = do x <- readFile "/tmp/foo.txt"
putStr x
Run Code Online (Sandbox Code Playgroud)
但是现在我希望这条道路成为一个论点,所以我尝试了下面的内容
main s = do x <- readFile s
putStr x
Run Code Online (Sandbox Code Playgroud)
它不起作用.我看到以下错误:
Couldn't match expected type `IO t0'
with actual type `FilePath -> IO ()'
In the expression: main
When checking the type of the function `main'
Run Code Online (Sandbox Code Playgroud)
我的作业是编写一个程序,程序必须包含一个main函数(因为它将被编译),而call的参数必须包含文件的名称.我不确定我是否理解这一点,我不知道如何继续.我会感激一些帮助.
我有一个使用Mojolicious框架的应用程序.我在数据库中有一个表,其中包含错误响应列表以及与之关联的其他详细信息.我已经创建了相应的Result和Resultset来使用DB表.还有一个控制器通过与Resultset交互来获取有关错误的详细信息.
我的想法是在此控制器中调用一个操作,通过查询数据库获取传递给它的错误的详细信息(由另一个控制器传递),添加有关为导致该资源的资源请求的环境的运行时信息.错误,创建响应并返回到调用它的控制器.
我正在努力应对从一个控制器到另一个控制器的呼叫.我如何在Mojolicious中做到这一点?我可以传递控制器对象($self)来实现这一点,但有没有更好的方法来做到这一点,所以我完全将我的错误处理响应与调用控制器分开?
File::Find 和 wanted 子程序这个问题比原始标题("原型和子程序的前向声明"!)简单得多.我希望答案,无论多么简单,都能帮助我理解子程序/函数,原型和范围以及File::Find模块.
使用Perl,子程序几乎可以出现在任何地方,你通常不需要进行前向声明(除非sub声明了一个原型,我不知道如何在Perl中采用"标准"方式).对于我通常用Perl做的事情,这些不同的运行方式之间没有什么区别somefunction:
sub somefunction; # Forward declares the function
&somefunction;
somefunction();
somefunction; # Bare word warning under `strict subs`
Run Code Online (Sandbox Code Playgroud)
我经常find2perl用来生成代码,我将这些代码整合到脚本的一部分中.这可能是糟糕的风格,现在我的脏衣服是公开的,但所以它是:-)因为File::Find该wanted功能是一个必需的子程序 - find2perl创建它并添加sub wanted;到它创建的结果脚本.有时候,当我编辑脚本时,我会从中移除" sub" sub wanted并最终为&wanted;或wanted();.但如果没有sub wanted;前瞻声明表格,我会收到此警告:
Use of uninitialized value $_ in lstat at findscript.pl line 29
Run Code Online (Sandbox Code Playgroud)
我的问题是:为什么会发生这种情况,这是一个真正的问题吗?这只是"警告",但我想更好地理解它.
$_是本地化的sub wanted {}.如果我使用wanted();而不是sub wanted;?为什么它会被定义?wanted某处使用原型?我错过了一些明显的东西Find/File.pm …