2011-11-18 76 views
3

我正在使用Net::SMPP包来处理SMPP协议。 协议参数之一应该是NULL终止的字符串。 当我把它我做的:Perl NULL终止字符串

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

当我收到我剥最后一个字符。

是否有更好的方式在Perl中使用“C String”?

+1

这似乎是一个非常好的解决方案,不是很复杂和Perlish的方法。是否有理由认为应该有不同的解决方案? –

回答

4

你可以用一个简单的替换修剪终止空:

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

...或者干脆砍()的最后一个字符:

chop $receipted_message_id; 
8

你可能想看看包并解压(参阅perldoc -f包),具体为:与需要特定的二进制协议与其他系统时

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

这些功能是金色的,无论是零个结尾的字符串,或以某种“网络顺序”或类似方式(高位或低位)输入。