嘿,我只是想知道是否有一个很酷的"单线程",可以排序我的哈希控件数组引用.所以我的哈希中有一堆键/值类似于:
$DataBase{$key} = \@value;
Run Code Online (Sandbox Code Playgroud)
但是我想按array[0]元素对哈希进行排序.然后循环通过'em.我有这个开头:
foreach my $key (sort {$DataBase{$a} cmp $DataBase{$b} } keys %DataBase)
Run Code Online (Sandbox Code Playgroud)
但这显然只是通过数组的指针值对我的哈希值进行排序.它并不一定是"一行",但我希望找到一个不涉及重构哈希的解决方案.
这是该文件的一个示例.
powrup.asm POWER_UP
......EXTERNAL_RAM_ADDRESSING_CHECK powrup.asm:461
......EXRAM powrup.asm:490
......INRAM powrup.asm:540
......OUTPUT_TEST powrup.asm:573
............AD_READ douttst.asm:276
............AD_READ douttst.asm:366
......OUTPUT2_TEST powrup.asm:584
............AD_READ douttst2.asm:253
............AD_READ douttst2.asm:342
......OUTPUT3_TEST powrup.asm:599
............AD_READ douttst3.asm:307
............AD_READ douttst3.asm:398
......INPUT_TEST powrup.asm:614
......PROGRAM_PINS2_INPUT powrup.asm:629
......ARINC_TEST powrup.asm:633
............ARINC_LEVEL_TEST artest.asm:178
..................AD_READ arltst.asm:204
..................AD_READ arltst.asm:250
..................AD_READ arltst.asm:300
..................AD_READ arltst.asm:346
..................AD_READ arltst.asm:396
..................AD_READ arltst.asm:442
............ARINC_READ artest.asm:209
............ARINC_WORD_TXRX_TEST artest.asm:221
..................ARINC_OUT artxrx.asm:207
..................ARINC_READ artxrx.asm:221
............ARINC_READ artest.asm:251
............ARINC_WORD_TXRX_TEST artest.asm:263
..................ARINC_OUT artxrx.asm:207
..................ARINC_READ artxrx.asm:221
......PROGRAM_PINS2_INPUT powrup.asm:640
......PROGRAM_PIN_TEST powrup.asm:642
......PT_RCVR_BITE powrup.asm:645
............AD_READ10 ptbite.asm:225
..................AD_READ adread10.asm:141
............AD_READ10 ptbite.asm:308
..................AD_READ adread10.asm:141
............AD_READ10 ptbite.asm:384
..................AD_READ …Run Code Online (Sandbox Code Playgroud) algorithm perl hierarchical-trees data-structures perl-data-structures
我是复杂数据结构的新手.我有点理解他们背后的想法,但是在获取数据方面遇到了一些困难.我通过使用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".
任何人都知道如何最好地完成这个?非常感谢!珍妮
我现在一直在靠墙撞墙几个小时.
我有一个看起来像这样的数据结构(从"Data :: Dumper"输出).这是我自己的错,我正在创建数据结构,因为我正在解析一些输入.
print Dumper $data;
___OUTPUT___
$VAR = { 'NAME' => {
'id' => '1234',
'total' => 192,
'results' => {
'APPLE' => 48 ,
'KUMQUAT' => 61 ,
'ORANGE' => 33 ,
}
}
}
Run Code Online (Sandbox Code Playgroud)
我想打印出逗号分隔列表,首先按"total"排序,然后按"results"数组中每个散列的值排序.
以下代码用于从已存储的数据结构中打印出CSV.
use strict;
use warnings;
# [...lots of other stuff...]
open (my $fh, >out.csv);
print $fh "Name, ID, Label, Count, Total\n";
foreach ( sort { $data->{$b}->{total} <=> $data->{$a}->{total} }
keys %{$data} )
{
my $name = $_;
foreach …Run Code Online (Sandbox Code Playgroud) 我想从文件中读取和处理输入集,然后将其打印出来.我需要使用3个密钥来存储数据.假设有3个键k1, k2, k3
以下哪项将提供更好的性能
$hash{k1}->{k2}->{k3} = $val;
Run Code Online (Sandbox Code Playgroud)
要么
$hash{"k1,k2,k3"} = $val;
Run Code Online (Sandbox Code Playgroud)
对于我之前的问题,我得到的答案是所有perl哈希键都被视为字符串.
我是perl的新手并且阅读用perl编写的代码.一行如下:
$Map{$a}->{$b} = $c{$d};
Run Code Online (Sandbox Code Playgroud)
我熟悉哈希的样子%samplehash和访问方式$samplehash{a}="b"
但是上面这句话实际上是什么说Map?
鉴于array @A我们想要检查element $B它是否在其中.一种方法是这样说:
Foreach $element (@A){
if($element eq $B){
print "$B is in array A";
}
}
Run Code Online (Sandbox Code Playgroud)
然而,当它到达Perl时,我总是在思考最优雅的方式.这就是我的想法:如果我们将A转换为变量字符串并使用,有没有办法找出数组A是否包含B
index(@A,$B)=>0
Run Code Online (Sandbox Code Playgroud)
那可能吗?
我正在尝试使用散列哈希与数组值概念生成哈希.我不确定我的语法是否正确.
下面是我希望应该创建具有数组值的哈希哈希值的代码部分.
use strict;
%hash=();
open IN, "samplefile.txt" or die "cannot open file:$!";
while(<IN>){
chomp $_;
my @split=split("\t", $_);
$hash{$split[0]}{$split[1]}=push @{ $hash{$split[0]}{$split[1]} },$split[2];
push(@array, $split[1]);
}
Run Code Online (Sandbox Code Playgroud)
样本数据集:
4 10 2
9 4 3
4 3 2
4 3 8
4 10 5
4 5 2
Run Code Online (Sandbox Code Playgroud)
期待哈希.
%hash=(
'4'=> {
'10'=>'2, 5'
'5' => '2'
'3' => '2,8'
}
'9'=>{
'4'=>'3'
}
)
Run Code Online (Sandbox Code Playgroud) 我想将带有参数的子程序推入堆栈,但我无法弄清楚语法.考虑一个没有参数的工作示例:
#!/usr/bin/perl -w
use strict;
use warnings;
sub hi { print "hi\n"; }
sub hello { print "hello\n"; }
sub world { print "world\n"; }
my @stack;
push (@stack, \&hi );
push (@stack, \&hello);
push (@stack, \&world);
while (@stack) {
my $proc = pop @stack;
$proc->();
}
Run Code Online (Sandbox Code Playgroud)
当我运行代码时:
% ./pop-proc.pl
world
hello
hi
Run Code Online (Sandbox Code Playgroud)
现在我的问题是,如果子程序看起来像这样:
sub mysub
{
chomp( my( $arg ) = @_ );
print "$arg\n";
}
Run Code Online (Sandbox Code Playgroud)
我想用参数推送子程序,例如:
mysub("hello");
mysub("world");
Run Code Online (Sandbox Code Playgroud)
您的意见非常感谢.
是否有工作像Python函数Perl函数all或any?Jobin的答案是对这两种功能如何运作的简短解释.
我想确定(没有循环)是否所有error-msg都defined and ne ""在以下结构中:
$VAR1 = [{
'row' => [{
err_msg => "msg1",
a => "a1",
b => "b1"
},
{
err_msg => "msg2",
a => "a2",
b => "b2"
}]
},
{
'row' => [{
err_msg => "msg3",
a => "a3",
b => "b3"
},
{
err_msg => "msg4",
a => "a4",
b => "b4"
}]
}]
Run Code Online (Sandbox Code Playgroud)