Получить количество элементов для шаблона упаковки / распаковки Perl - PullRequest
1 голос
/ 02 июля 2019

Учитывая строку шаблона для функции pack или unpack, существует простой способ определить минимальное количество дополнительных аргументов, ожидаемых pack, и / или минимальное количество значений, которые будут возвращены успешный unpack?

Например:

unpack_element_count("vVC16a16") => 19 # a16 gives one string
pack_element_count("(VVVvx4)2")  => 8  # x4 ignored, 4*2
pack_element_count("v*")         => 0

$count =()= unpack($template, ""); звучит не очень хорошо, так как документация для unpack говорит о попытке распаковать слишком короткую строку, "результат не определен". Я полагаю, что мог бы передать строку с огромным количеством нулевых байтов, но это звучит довольно неэффективно и, возможно, может оказаться недопустимым для некоторых более изящных шаблонов?

Если это поможет, меня в основном интересуют только шаблоны с фиксированным количеством элементов, то есть без *, без / форматов с префиксами-подсчетом-в-данных и т. Д. Итак, ответ на этот ограниченный случай будет полезно; Интересно было бы найти ответ на более общий случай (минимум числа переменных).

1 Ответ

1 голос
/ 02 июля 2019

Для этого нет встроенного инструмента.

Я сомневаюсь, что что-то существует в CPAN, но не стесняйтесь искать там, чтобы увидеть, есть ли что-то, что может вам помочь. (Рекомендации модуля не по теме.)

...