标签: perl-data-structures

如何对值为数组引用的Perl哈希进行排序?

嘿,我只是想知道是否有一个很酷的"单线程",可以排序我的哈希控件数组引用.所以我的哈希中有一堆键/值类似于:

$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)

但这显然只是通过数组的指针值对我的哈希值进行排序.它并不一定是"一行",但我希望找到一个不涉及重构哈希的解决方案.

sorting perl hash reference perl-data-structures

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

在Perl中创建树数据结构(必须是本机)以表示位于外部文件中的调用树

这是该文件的一个示例.

  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

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

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
查看次数

帮助步行/排序复杂的Perl数据结构(HoH with AoH fun)

我现在一直在靠墙撞墙几个小时.

我有一个看起来像这样的数据结构(从"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)
  • 有数千个"NAME"键.
  • 只有一个"id"和一个"total".
  • "结果"哈希中可能有一个或多个键/值对.

我想打印出逗号分隔列表,首先按"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)

perl perl-data-structures

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

Perl Multi hash vs Single hash

我想从文件中读取和处理输入集,然后将其打印出来.我需要使用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-data-structures

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

perl中这个变量的数据结构是什么?

我是perl的新手并且阅读用perl编写的代码.一行如下:

$Map{$a}->{$b} = $c{$d};
Run Code Online (Sandbox Code Playgroud)

我熟悉哈希的样子%samplehash和访问方式$samplehash{a}="b"

但是上面这句话实际上是什么说Map?

perl perl-data-structures

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

Perl:搜索数组中的项目

鉴于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)

那可能吗?

arrays variables perl hash perl-data-structures

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

具有数组值的哈希哈希值

我正在尝试使用散列哈希与数组值概念生成哈希.我不确定我的语法是否正确.

下面是我希望应该创建具有数组值的哈希哈希值的代码部分.

 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)

perl perl-data-structures

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

将带有参数的子例程推入Perl中的堆栈

我想将带有参数的子程序推入堆栈,但我无法弄清楚语法.考虑一个没有参数的工作示例:

#!/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)

您的意见非常感谢.

perl subroutine perl-data-structures

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

Python内置函数`all`和`any`的Perl pendant

是否有工作像Python函数Perl函数allanyJobin的答案是对这两种功能如何运作的简短解释.

我想确定(没有循环)是否所有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)

python perl perl-data-structures

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