use Device::Gsm::Sms; my $sms = Device::Gsm::Sms->new(); # example for SMS in PDU mode #07911356131313F351000B911326926556F800F6AD4E060504C032C032000014010F06050C2A363100835D0001F5F5FFFFFFFF0002000201FE0700080000000000119FBDC8000908001231653131313F09001153494D4B617274656E5465737465723031 $sms->decode("010F06050C2A363100835D0001F5F5FFFFFFFF0002000201FE0700080000000000119FBDC8000908001231653131313F09001153494D4B617274656E5465737465723031"); print "SMS content:\n " .$sms->decode(); sub decode { my( $self, $type ) = @_; $self->{'type'} = $type; # Get list of tokens for this message (from ::Sms::Structure) my $cPdu = $self->{'pdu'}; # Check that PDU is not empty return 0 unless $cPdu; # Backup copy for "backtracking" my $cPduCopy = $cPdu; my @token_names = $self->structure(); my $decoded = 1; while( @token_names ) { # Create new token object my $token = new Sms::Token( shift @token_names, {messageTokens => $self->{'tokens'}} ); if( ! defined $token ) { $decoded = 0; last; }