gpt4 book ai didi

Perl 5.26 : How to get keys from 2d hash?

转载 作者:行者123 更新时间:2023-12-04 10:39:24 24 4
gpt4 key购买 nike

系统:Ubuntu 18.04 上的 Perl 5.26.1。

我们将 Ubuntu 升级到 18.04,将 Perl 升级到 5.26,现在不再支持我在 Perl 5.18 中使用 2d 哈希的实验方式。这是我使用实验性东西的错。

我的目标 :我正在尝试使用新方法进行散列的散列,或 2 个键的散列,或 2d 散列。 IE。一个散列有 2 个键,一个部门,每个部门都有一个或多个员工 ID。散列中也可以有多个部门作为第一个键。我正在从 SQL 语句的结果中读取数据,因此我必须为每个员工 ID 添加小时数。部分问题是我先读了部门,然后我得到了empid。

问题 :我在第二个循环中遇到错误以获取 empid。运行时错误是:“在使用“严格引用”时,不能使用字符串(“6”)作为 HASH 引用”。

  • 我一直在做研究,但找不到适合我的案例的具体示例,这些示例与我正在做的不同,或者我尝试的示例不起作用并给我一个错误。
  • 我读过的页面至少有一半没有日期,所以我什至无法猜测它们是用于哪个版本的 perl。
  • 关于这个主题的 perldocs 与我在互联网上找到的其他页面相同。
  • 我不能只对这份报告使用简单的 SQL 语句,因为在获得每个员工的数据后,我必须做更多的处理。
  • 我已经尝试了几种代码排列,但都没有运气。但我在这里排除了这些排列。
  • 由于某种原因,我在 Internet 上找到的大多数示例都不适用于 Perl 5.26。

  • 这是我的代码。我已经尝试了来自不同来源的几种排列来使它起作用。
    use strict;
    use warnings;


    use Data::Dumper;

    ####################
    # Variables
    my $i=0;
    my $s='';
    my $t='';
    my $k='';
    my $k2='';
    my $empid='';
    my $z='';
    my @k=(); # Key list
    my @k2=(); # Key list

    my %hashs=(); # Scalar hash, works.
    my %empees=();
    my $pos=0;
    my $val="Myval";
    my $dept='';

    ####################
    $s="Data::Dumper $Data::Dumper::VERSION";
    print "$s\n";
    print "\n";

    $empees{'JSMITH'}=1.0; # WORKS
    $empees{'RGREEN'}=2.0;
    $empees{'KJONES'}=3.0;
    $hashs{950}=%empees;

    $empees{'WSMIT'}=1.5;
    $empees{'AMCBE'}=2.5;
    $empees{'SCHWAR'}=3.5;
    $hashs{800}=%empees;

    # Now print out values in 2d hash.
    @k=keys(%hashs);
    print "Keys and values are:\n";
    foreach $dept (sort keys %hashs)
    {
    for $empid (sort keys %{$hashs{$dept}} ) # ERROR is here
    {
    $val=$hashs{$dept}{$empid};
    $t="$dept $empid $val";
    print "$t\n";
    } # foreach $empid
    } # foreach $dept
  • 有人可以帮我吗?
  • 除了哈希散列之外,还有其他方法可以完成此操作吗?

  • 谢谢你的帮助!我真的很感激你的时间!

    最佳答案

    这个片段对我有用

    $hashs{950}=\%empees;

    $empees{'WSMIT'}=1.5;
    $empees{'AMCBE'}=2.5;
    $empees{'SCHWAR'}=3.5;
    $hashs{800}=\%empees;

    # Now print out values in 2d hash.
    @k=keys(%hashs);
    print "Keys and values are:\n";
    for my $dept (sort keys %hashs) {
    for my $empid (sort keys %{$hashs{$dept}}) {
    print "$empid\n";
    $val=$hashs{$dept}{$empid};
    $t="$dept $empid $val";
    print "$t\n";
    } # foreach $empid
    } # foreach $dept

    关于Perl 5.26 : How to get keys from 2d hash?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60005136/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com