2011-11-18 75 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. 

這些功能是金色的,無論是零個結尾的字符串,或以某種「網絡順序」或類似方式(高位或低位)輸入。