Предупреждение: '\\' будет трактоваться буквально внутри [] - PullRequest
1 голос
/ 05 октября 2019

Мой Perl код содержит следующие строки:

use Math::Random::Secure qw /irand/;
use String::Random;

$c = String::Random->new(rand_gen => sub {return irand($_[0]);})->randregex('[\da-f]{32}');

И я получаю следующее предупреждение сообщение:

«\\» будет трактоваться буквально внутри []

Что это значит и что я делаю неправильно?

Ответы [ 2 ]

1 голос
/ 05 октября 2019

Другое решение - полностью избегать String :: Random. Уже использованный irand возвращает 32-битные целые числа, поэтому вы можете использовать следующее:

my $c = unpack 'H*', pack 'L*', map irand, 1..4;

В качестве бонуса, я думаю, что это решение будет быстрее.

1 голос
/ 05 октября 2019

Из документов для String :: Random :: randregex:

Обратите внимание, что аргументы randregex не являются реальными регулярными выражениями. На самом деле поддерживается только небольшое подмножество синтаксиса регулярных выражений .... В настоящее время специальные символы внутри [] не поддерживаются.

Так что, возможно, замените \ d на 0-9

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...