2011-11-18 25 views
3

私はNet::SMPPパッケージを使用してSMPPプロトコルを処理しています。 プロトコルパラメータの1つは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

あなたは具体的には、パックに見て、(パック-fはperldoc)を解凍したい場合があります:

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

固有のバイナリプロトコルを必要とする他のシステムで作業する場合、これらの機能は金色です、それはゼロで終わる文字列で、ある特定の「ネットワーク順序」またはそれに類するもの(高いものから低いものまで)でのint。

関連する問題