Perl在使用内部regexp解析json时内存不足
我正在解析一个非常简单的json文件,perl内存不足。我正在使用来自cpan的JSON库。我正在从一个名为“data.json”的文件中读取json。我还使用File::Slurper模块Perl在使用内部regexp解析json时内存不足,json,perl,Json,Perl,我正在解析一个非常简单的json文件,perl内存不足。我正在使用来自cpan的JSON库。我正在从一个名为“data.json”的文件中读取json。我还使用File::Slurper模块 use JSON; use File::Slurper; my $file = read_text("data.json"); my @data = decode_json($file); print @data; 在我的data.json文件中,我有一个对象数组,每个对象中都有regexp [ {
use JSON;
use File::Slurper;
my $file = read_text("data.json");
my @data = decode_json($file);
print @data;
在我的data.json
文件中,我有一个对象数组,每个对象中都有regexp
[
{
"val": "test",
"reg": "m/^(match)/"
}
...3 more entries
]
当我运行这个时,它会说
内存不足
如何绕过此问题?不清楚是什么原因导致代码中出现错误。请参阅下面的示例代码,它以稍微不同的方式完成相同的工作
use strict;
use warnings;
use feature 'say';
use JSON;
use Data::Dumper;
my $file = do { local $/; <DATA> };
my @data = decode_json($file);
say Dumper(\@data);
__DATA__
[
{
"val": "test1",
"reg": "m/^(match)/"
},
{
"val": "test2",
"reg": "m/^(match)/"
},
{
"val": "test3",
"reg": "m/^(match)/"
},
{
"val": "test4",
"reg": "m/^(match)/"
}
]
请提供问题的演示。如果您按照
JSON->backend
提供的方式指定正在使用的JSON解析器,这也是最好的。请注意,没有“每个obj中都有regexp”这样的东西。这里只有一根绳子。我向您保证,您正在使用的代码用于解析JSON,就像您每天每秒提供的代码一样,不会耗尽内存。您应该使用read\u binary
和decode\u JSON
,或者read\u text
和from\u JSON
。否则,将从UTF-8解码两次。
$VAR1 = [
[
{
'val' => 'test1',
'reg' => 'm/^(match)/'
},
{
'val' => 'test2',
'reg' => 'm/^(match)/'
},
{
'val' => 'test3',
'reg' => 'm/^(match)/'
},
{
'reg' => 'm/^(match)/',
'val' => 'test4'
}
]
];