Perl 将键指定给外部命令结果中的值

Perl 将键指定给外部命令结果中的值,perl,Perl,我被卡住了。我从外部工具运行命令。此工具的输出格式如下: { { Dan Summers Male Funds less than $100 March 23, 2021 1:58:24 PM Undisclosed } { Susan August Female no funds March 23, 2021 7:58:24 AM Expired } } 我需要为这些值分配一个键,以便稍后进行一些匹配,并将其打印为一行,

我被卡住了。我从外部工具运行命令。此工具的输出格式如下:

{
 {
   Dan Summers

   Male
   Funds less than $100
   March 23, 2021 1:58:24 PM
   Undisclosed
 }
 {
   Susan August

   Female
   no funds
   March 23, 2021 7:58:24 AM
   Expired
 }
}
我需要为这些值分配一个键,以便稍后进行一些匹配,并将其打印为一行,但我不确定如何执行此操作。 首先,我做了一些搜索和替换,使其成为单行。但后来我意识到,我仍然没有办法添加密钥。作为我所做工作的一个例子:

use strict;
use warnings;
my $result = `command`;
$result =~ s/\n//g;
print "$result";
这给了我一个结果:

{ {   Dan Summers   Male   Funds less than $100   March 23, 2021 1:58:24 PM   Undisclosed } {   Susan August   Female   no funds   March 23, 2021 7:58:24 AM GMT+02:00   Expired }}
然后我甚至在尝试将其变成字符串之前尝试添加键,但显然这不是一个拆分数组,因此使用
$arr[0]
将不起作用。。所以我们都知道这是怎么回事:

use strict;
use warnings;
my @result = `command`;
for my $res(@result) {
    print "line: $res[0]"
}
如何添加键以便获得类似于JSON的结果?比如:

{
 {
   name: Dan Summers
   gender: Male
   fundstatus: Funds less than $100
   updated: March 23, 2021 1:58:24 PM
   status: Undisclosed
 } ....
我真的很想在这里得到一些指导

编辑 忘了提了。外部工具没有任何匹配条件来搜索用户名或任何类似的内容。如果您运行该工具,结果中有10个人,它将以第一个示例的格式打印所有10个人。。仅供参考,因此无法仅提取用户为“Dan Summers”的详细信息


这就是我这么做的原因,因此我可以在工具之外构建此功能。

将整个过程视为一个带有奇怪分隔符的CSV文件。记录分隔符是
}{
和空格的组合。字段分隔符是换行符。请清除周围的括号或忽略它们

我的代码不进行任何输入格式验证,而是提供处理到DBI所需的值

使用严格;
使用警告;
#换上你的外壳
my$input=do{local$/=unde;};
foreach my$记录(拆分'}',$input){
我的($name,$gender,$fundstatus,$updated,$status)=grep{/[^{}\s]/}split“\n”,$record;
下一步除非$name;
# ...
}
__资料__
{
{
丹萨默斯
男性
不足100美元的资金
2021年3月23日下午1:58:24
未公开
}
{
苏珊·奥古斯特
女性
没有资金
2021年3月23日上午7:58:24
期满
}
}

将整个过程视为一个带有奇怪分隔符的CSV文件。记录分隔符是
}{
和空格的组合。字段分隔符是换行符。请清除周围的括号或忽略它们

我的代码不进行任何输入格式验证,而是提供处理到DBI所需的值

使用严格;
使用警告;
#换上你的外壳
my$input=do{local$/=unde;};
foreach my$记录(拆分'}',$input){
我的($name,$gender,$fundstatus,$updated,$status)=grep{/[^{}\s]/}split“\n”,$record;
下一步除非$name;
# ...
}
__资料__
{
{
丹萨默斯
男性
不足100美元的资金
2021年3月23日下午1:58:24
未公开
}
{
苏珊·奥古斯特
女性
没有资金
2021年3月23日上午7:58:24
期满
}
}

是否要在同一程序中处理此数据?您好@simbabque。谢谢你的回复。我不能,这个工具不在我的控制范围内,所以我只需要提取数据,然后使用perl将数据插入数据库,但我需要密钥来完成。这就是我的意思。所以你得到了这些数据,但之后的所有处理都在你的代码中?没错,是的,@simbabque。我不会担心JSON本身。您知道行/字段的顺序总是相同的吗?您想在同一个程序中处理这些数据吗?Hi@simbabque。谢谢你的回复。我不能,这个工具不在我的控制范围内,所以我只需要提取数据,然后使用perl将数据插入数据库,但我需要密钥来完成。这就是我的意思。所以你得到了这些数据,但之后的所有处理都在你的代码中?没错,是的,@simbabque。我不会担心JSON本身。您知道行/字段的顺序总是相同的吗?