使用Perl6解析二进制结构的最佳选择是什么.
在Perl5中,我们在Perl6上有打包/解包方法它们似乎是实验性的
是否可以使用Perl6语法来解析二进制数据,假设我有一个文件,其中包含以下二进制格式的记录:
struct record {
short int ut_type;
char ut_line[UT_LINESIZE];
char ut_id[4];
char ut_user[UT_NAMESIZE];
char ut_host[UT_HOSTSIZE];
}
Run Code Online (Sandbox Code Playgroud)
是否可以使用Perl6语法解析此文件?
使用Perl6解析二进制结构的最佳选择是什么?
特别是考虑到你了解P5的打包/拆包,新的P5pack模块似乎是合适的解决方案.(我没有测试它.这是新的.AIUI它没有实现的一切,并没有模仿P5的包亦步亦趋.但它是利兹.)
如果上面链接的P5包接口的新纯P6实现没有做你需要做的事情,另一个明显的解决方案是在你的P6代码中使用原始的P5函数,由常规的perl 5二进制文件执行.以下是不完整/未经测试但我的意思大致如下:
use Inline::Perl5 ; my \P5 = Inline::Perl5.new ;
my $mem = Buf ... ;
my $hex = P5.call('unpack', 'H*', $mem) ;
Run Code Online (Sandbox Code Playgroud)
(或者,相反,将主线写为P5代码,通过添加P6代码Inline::Perl6.)
在当前版本的P6中6.c,语法只能处理文本.
2年前P6er"skids"写道:
"有足够的人想要二进制语法,我认为它会成为"(写于2016年).
那时他们还整理了以下相关链接:
滑动然后是一个packing foo { template bar { ... } }构造的新想法加上他们更古老的"非常古老,低级别的类型思想".
ShimmerFairy的"关于P6中可能的二进制语法的思考(不完整)"
Juerd的"RFC:更多Perl6-esque"解包"".
smls的"Perl 6中的二进制解析".
masak的"在Perl 6中打包/解包的第一种方法".
jnthn的"语法谈话::生成"(视频).
| 归档时间: |
|
| 查看次数: |
309 次 |
| 最近记录: |