Perl NULL终止字符串

时间:2011-11-18 17:40:23

标签: perl

我使用Net::SMPP包来处理SMPP协议。 其中一个协议参数应为NULL终止字符串。 当我发送它时,我做:

my $receipted_message_id = '111111'."\0";

当我收到它时,我剥去了最后一个角色。

在Perl中使用“C String”有更好的方法吗?

2 个答案:

答案 0 :(得分:8)

您可能需要查看pack和unpack(perldoc -f pack),特别是:

Z  A null-terminated (ASCIZ) string, will be null padded.

当与需要特定二进制协议的其他系统一起工作时,这些功能是很好的,无论是零终止字符串,还是某种“网络顺序”或类似的(高端与低端)的内联。

答案 1 :(得分:4)

您可以通过简单的替换来修剪终止空值:

$receipted_message_id =~ s/\0$//;

...或者只是砍掉()最后一个字符:

chop $receipted_message_id;