Учитывая строку шаблона для функции 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
говорит о попытке распаковать слишком короткую строку, "результат не определен". Я полагаю, что мог бы передать строку с огромным количеством нулевых байтов, но это звучит довольно неэффективно и, возможно, может оказаться недопустимым для некоторых более изящных шаблонов?
Если это поможет, меня в основном интересуют только шаблоны с фиксированным количеством элементов, то есть без *
, без /
форматов с префиксами-подсчетом-в-данных и т. Д. Итак, ответ на этот ограниченный случай будет полезно; Интересно было бы найти ответ на более общий случай (минимум числа переменных).