获取 Perl pack/unpack 模板的元素数
Get the number of elements for a Perl pack/unpack template
给定 pack
或 unpack
函数的模板字符串,是否有一种简单的方法来确定 pack
、and/or 预期的附加参数的最小数量成功 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, "");
听起来不太好,因为 the documentation for unpack
在尝试解压缩太短的字符串时说 "the result is not well defined"。我想我可以传递一个包含大量零字节的字符串,但这听起来效率很低,而且可能对某些更高级的模板无效?
如果有帮助,我实际上主要只对具有固定元素计数的模板感兴趣,这意味着没有 *
计数,没有 /
前缀计数数据格式等。所以对这种有限情况的回答会有所帮助;对更一般情况(变量计数的最小值)的回答会很有趣。
没有提供执行此操作的内置工具。
我怀疑 CPAN 上是否存在某些内容,但随时可以在那里搜索以查看是否有可以帮助您的内容。 (模块推荐 off-topic。)
给定 pack
或 unpack
函数的模板字符串,是否有一种简单的方法来确定 pack
、and/or 预期的附加参数的最小数量成功 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, "");
听起来不太好,因为 the documentation for unpack
在尝试解压缩太短的字符串时说 "the result is not well defined"。我想我可以传递一个包含大量零字节的字符串,但这听起来效率很低,而且可能对某些更高级的模板无效?
如果有帮助,我实际上主要只对具有固定元素计数的模板感兴趣,这意味着没有 *
计数,没有 /
前缀计数数据格式等。所以对这种有限情况的回答会有所帮助;对更一般情况(变量计数的最小值)的回答会很有趣。
没有提供执行此操作的内置工具。
我怀疑 CPAN 上是否存在某些内容,但随时可以在那里搜索以查看是否有可以帮助您的内容。 (模块推荐 off-topic。)