Perl:创建一个哈希,其键和值来自给定的数组?

时间:2017-09-06 06:26:03

标签: perl

我想以给定格式将#include <functional> #include <iostream> #include <cassert> int foo(double d) { return d; } double bar(double d) { return 2*d; } struct Result { union { int i_res; double d_res; }; enum { IS_INT, IS_DOUBLE } u_tag; Result(Result const&) = default; Result(int i) : i_res{i}, u_tag{IS_INT} {} Result(double d) : d_res{d}, u_tag{IS_DOUBLE} {} Result& operator=(Result const&) = default; auto& operator=(int i) { i_res = i; u_tag = IS_INT; return *this; } auto& operator=(double d) { d_res = d; u_tag = IS_DOUBLE; return *this; } }; int main() { std::function<Result(double)> cb; cb = foo; auto r = cb(1.0); assert(r.u_tag == Result::IS_INT); std::cout << r.i_res << '\n'; cb = bar; r = cb(2.0); assert(r.u_tag == Result::IS_DOUBLE); std::cout << r.d_res << '\n'; return 0; } 转换为array

hash

1 个答案:

答案 0 :(得分:5)

use strict;
use warnings;

use Data::Dumper;
my @array = ('a',1,2,3,4,'b',6,7,8);
my %hash;
my $r;

tr/0-9//c ? $r= ($hash{$_}=[]) : push(@$r, $_) for @array;

print Dumper \%hash;

输出

$VAR1 = {
      'b' => [
               6,
               7,
               8
             ],
      'a' => [
               1,
               2,
               3,
               4
             ]
    };