Perl在使用内部regexp解析json时内存不足

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 [ {

我正在解析一个非常简单的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

[
{
  "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'
            }
          ]
        ];