gpt4 book ai didi

perl - 使用 Perl 从文本中提取多个项目

转载 作者:行者123 更新时间:2023-12-05 00:36:54 26 4
gpt4 key购买 nike

我需要从多行字符串中提取多个项目。

{
'autoname' => 1,
'class' => 'packetfilter',
'data' => {
'action' => 'accept',
'auto' => 0,
'auto_type' => '',
'comment' => 'Allow access to Sandbox Server',
'destinations' => [
'REF_NetworkAny'
],
'direction' => '',
'group' => 'SANDBOX',
'interface' => '',
'log' => 1,
'name' => 'TCP_5090 from SND (Network) to Any',
'services' => [
'REF_SerTcpTcp5090',
'REF_SerTcpTcp8200',
'REF_SerTcpTcp8883',
'REF_SerTcpTcpudp5090'
],
'source_mac_addresses' => '',
'sources' => [
'REF_MHTGIvpkvI'
],
'status' => 1,
'time' => ''
},
'hidden' => 0,
'lock' => '',
'nodel' => '',
'ref' => 'REF_PacPacTcp50FromSnd',
'type' => 'packetfilter'
}

我需要找到标签“服务”、目的地和来源,并只提取每个标签的 REF 标签。

例子:

services
REF_SerTcpTcp5090
REF_SerTcpTcp8200
REF_SerTcpTcp8883
REF_SerTcpTcpudp5090

destinations
REF_NetworkAny

sources
REF_MHTGIvpkvI

如有任何指导,我们将不胜感激。

最佳答案

这确实看起来像 Perl。您可以使用 eval 将其转换为 Perl 数据结构,但这有很多安全问题。

相反,使用 the Safe module评估它,但只允许某些运算符(operator)。这将阻止它做一些不安全的事情,比如打开文件或添加功能。这是一个演示。

use v5.10;
use strict;
use warnings;

use Safe;

my $safe = Safe->new;
my $data = $safe->reval(join "", <DATA>) or die "reval failed: $@";
say join "\n", keys %$data;

__END__
{
'autoname' => 1,
'class' => 'packetfilter',
'data' => {
'action' => 'accept',
'auto' => 0,
'auto_type' => '',
'comment' => 'Allow access to Sandbox Server',
'destinations' => [
'REF_NetworkAny'
],
'direction' => '',
'group' => 'SANDBOX',
'interface' => '',
'log' => 1,
'name' => 'TCP_5090 from SND (Network) to Any',
'services' => [
'REF_SerTcpTcp5090',
'REF_SerTcpTcp8200',
'REF_SerTcpTcp8883',
'REF_SerTcpTcpudp5090'
],
'source_mac_addresses' => '',
'sources' => [
'REF_MHTGIvpkvI'
],
'status' => 1,
'time' => ''
},
'hidden' => 0,
'lock' => '',
'nodel' => '',
'ref' => 'REF_PacPacTcp50FromSnd',
'type' => 'packetfilter'
}

安全并非 100% 安全,因此您不应养成这种习惯。如果可能,请使用 JSON 等可解析格式进行数据序列化。

关于perl - 使用 Perl 从文本中提取多个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36462900/

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