添加到表现异常的 Perl 哈希

2024-06-22

我试图通过将时间标签从事件内移动到其父级内来更改一些 XML 以按时间对事件进行分组。那是...

<schedule>
    <event>
        <time>02:00</time>
        <other_details>details</other_details>
    </event>
    <event>
        <time>02:00</time>
        <other_details>details</other_details>
    </event>
    <event>
        <time>03:00</time>
        <other_details>details</other_details>
    </event>
<schedule>

应该成为

<schedule>
    <event>
        <time>02:00</time>
        <event_details>
            <other_details>details</other_details>
        </event_details>
        <event_details>
            <other_details>details</other_details>
        </event_details>
    </event>
    <event>
        <time>03:00</time>
        <event_details>
            <other_details>details</other_details>
        </event_details>
    </event>
</schedule>

我解决这个问题的方法是使用 XML::Simple 将 XML 读入散列,抽出时间,并将其用作另一个散列的键,该散列包含一组event_details. Code:

#!/Perl/bin/perl
#scheduleConversion.plx v1.0

use strict;
use warnings;

use XML::Simple;
use Data::Dumper;

use constant EVENTTAG   => 'event';
use constant TIMETAG    => 'event_time';
use constant DETAILSTAG => 'event_details';

if($#ARGV != 0) {
    print "Usage: First argument should be filename, optionally with path.";
}

# Get filename/path from the arguments
my $docname = shift @ARGV;

# Create a new XML parser
my $xml = new XML::Simple;
# Read in the XML data
my $XMLdata = $xml->XMLin($docname);
# New XML data to be output
my %XMLnew;
$XMLnew{&EVENTTAG} = [];

my %timeGroups;

foreach (@{$XMLdata->{&EVENTTAG}}) {
    my $time = ${$_}{&TIMETAG};
    delete ${$_}{&TIMETAG};

    # Make an array if none exists
    $timeGroups{$time} = [] unless exists($timeGroups{$time});
    # Add our details to the array
    push($timeGroups{$time}, $_);
}

foreach (%timeGroups) {
    push ($XMLnew{&EVENTTAG}, $_{&EVENTTAG});
}

#print $xml->XMLout(%XMLnew);

问题是当我尝试print Dumper(%timeGroups);,它给了我这样的结果:

$VAR1 = '2015-09-10 03:59:00';
$VAR2 = [
          {
            'event_detail_1' => 'details_1',
            'event_detail_2' => 'details_2'
          }
        ];

我希望看到日期作为关键,但它似乎是一个完全不同的条目。我用一个单独的哈希测试了这个,还创建了一个键/值对$hash{key} = 'value',这给出了与上面相同的意外结果,而$hash = {'key' => 'value'}给出了预期的结果。
我确信我只是错过了有关 Perl 哈希如何工作的一些内容,但我认为这两种方法应该是等效的。我一整天都在用我的大脑思考这个问题,我刚刚设法将其范围缩小到这个原因。


print Dumper(%timeGroups)正在变平%timeGroups放入键和值的列表中并将多个参数传递给Dumper。通常你想向 Dumper 传递一个引用:print Dumper(\%timeGroups).

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

添加到表现异常的 Perl 哈希 的相关文章

随机推荐

  • 仅使用 ExecutorService 中的线程子集

    在典型的JAVA应用程序中 配置一个全局ExecutorService来管理全局线程池 假设我配置了一个包含 100 个线程的固定线程池 ExecutorService threadPool Executors newFixedThread
  • 导入 subprocess32 时出现问题

    我正在尝试通过 buildroot 安装 python 2 7 安装 subprocess32 它似乎安装正确 但当我将其导入嵌入式系统时 出现错误 gt gt gt import subprocess32 usr lib python2
  • 使用 simd 查找字符的第一个实例

    我正在尝试使用 simd AVX2 或更早版本 查找字符的第一个实例 在本例中为 我想使用 mm256 cmpeq epi8 但随后我需要一种快速方法来查找是否有任何结果字节 m256i 已设置为 0xFF 当时的计划是使用 mm256 m
  • 获取上传到云存储的对象的公共 url

    I uploaded a pdf file on cloud storage But when i access url https storage cloud google com BUCKET FILE jpg https storag
  • 使用 JSZip 编辑压缩文件中的文件

    Using JSZip https stuk github io jszip 有没有办法编辑压缩文件中的文件 我尝试过寻找解决方案并浏览 API 但似乎找不到解决方案 任何对此的帮助都会很棒 提前致谢 您可以使用以下命令编辑 zip 中的文
  • Google 地图 API v2 灰屏

    我正在尝试创建与谷歌地图连接的应用程序 但是当屏幕加载时 地图应该是灰色的 我该如何解决 来自我的 logcat 的重要消息 06 11 03 32 55 196 E Google Maps Android API 11671 Ensure
  • 延迟加载的模块可以共享其父模块提供的同一服务实例吗?

    我刚刚遇到了延迟加载模块的问题 其中父模块和子模块都需要相同的服务 但各自创建一个实例 两者的声明是相同的 即 import MyService from my service NgModule providers MyService 这是
  • 迭代defaultdict字典的键和值

    以下内容按预期工作 d 1 2 3 4 for k v in d print s s str k str v 但这失败了 d collections defaultdict int d 1 2 d 3 4 for k v in d prin
  • 解析地理点迅速无法获取当前位置

    尝试使用解析PFGeoPoint geoPointForCurrentLocationInBackground当我向后端发送内容时获取当前位置 代码看起来像 NSLog Before block PFGeoPoint geoPointFor
  • 有没有办法在jedis中传递redis命令,而不使用函数?

    我们正在尝试构建一个控制台来处理 Redis 查询 但是 在后端我们需要使用Jedis 因此 作为输入给出的命令需要使用 Jedis 进行处理 例如 在redis cli中 我们使用 keys 同样 我们在 Jedis 中使用 jedis
  • CurrentDb.RecordsAffected 返回 0。为什么?

    如果我将 RecordsAffected 与 CurrentDb Execute 一起使用 它总是返回 0 如果我首先创建数据库对象的实例 它会正常工作 为什么 像这样 Dim Db As Database Set Db CurrentDb
  • 当 spring-cloud-starter-zipkin 使用 zipkin.brave 时,为什么需要 Spring sleuth ?

    只需添加 spring cloud starter zipkin 也能够生成 spanId 和 TraceId 那么 Sleuth 需要什么 spring cloud starter zipkin 实际上是自己拉 io zipkin bra
  • 如何通过反射判断一个Java类是否是抽象类

    我正在通过 Jar 文件中的类进行交互 并希望找到那些不抽象的类 我可以通过实例化类并捕获 InstantiationException 来解决此问题 但这会影响性能 因为某些类启动繁重 我在 Class java 文档中找不到类似 isA
  • D3 版本 5,如何将 Promise 链接到图表构建

    我想将 JS Promise 链接到 D3 v5 图表构建 并想在动画之后解决它 但它不起作用 下面的代码还在注释中显示了不同类型的尝试 它们都不起作用 选项 3 导致异常 未捕获 承诺中 类型错误 无法读取未定义的属性 on 选项 2 和
  • Classcast异常随机发生

    我在市场上有一个应用程序 许多用户报告该应用程序经常随机崩溃 我正在尝试解决此问题 但无法完全理解日志 这是日志的摘录 04 16 13 16 32 407 E AndroidRuntime 9237 java lang RuntimeEx
  • 如何在公共文件夹中使用静态JS的环境变量

    I have VueJS app Vue CLI 3 和额外的静态JS脚本 in public文件夹 我不明白如何使用 env在这个 js 假设我有一些特定的环境变量 例如MY URL和我的 JS 文件 const myUrl proces
  • GitHub:无法加载最新提交信息

    我实际上是 GitHub 的新手 不太了解它的功能 所以我的问题可能是非常根本的 我用谷歌搜索 也在堆栈溢出中搜索 但没有找到任何解决办法 最近 我分叉了Linux https github com torvalds linux只是为了满足
  • Marquee 在 Firefox 中无法正常工作

    我正在使用选取框 它在 chrome 中运行良好 但在 firefox 中它只一次又一次地显示第一个 div 这是代码
  • 为什么 chrome 缓存请求需要时间?

    Even though Chrome is caching static files JS images etc in the Network tab these files are taking sometime as shown in
  • 添加到表现异常的 Perl 哈希

    我试图通过将时间标签从事件内移动到其父级内来更改一些 XML 以按时间对事件进行分组 那是