Perl Недостаточно памяти при разборе json с регулярным выражением внутри - PullRequest
0 голосов
/ 14 февраля 2020

Я анализирую очень простой файл json, а perl не хватает памяти. Я использую JSON lib из cpan. Я читаю json из файла с именем «data. json». Я также использую модуль File :: Slurper.

use JSON;
use File::Slurper;

my $file = read_text("data.json");
my @data = decode_json($file);
print @data;

В моем файле data.json у меня есть массив объектов с регулярным выражением внутри каждого объекта.

[
{
  "val": "test",
  "reg": "m/^(match)/"
}
...3 more entries
]

Когда я запускаю это, он говорит:

Недостаточно памяти!

как мне это обойти?

1 Ответ

0 голосов
/ 14 февраля 2020

Не понятно, что вызывает ошибку в вашем коде. Смотрите следующий пример кода, который выполняет ту же работу немного по-другому.

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)/"
    }
]

Вывод

$VAR1 = [
          [
            {
              'val' => 'test1',
              'reg' => 'm/^(match)/'
            },
            {
              'val' => 'test2',
              'reg' => 'm/^(match)/'
            },
            {
              'val' => 'test3',
              'reg' => 'm/^(match)/'
            },
            {
              'reg' => 'm/^(match)/',
              'val' => 'test4'
            }
          ]
        ];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...