Perl编码不打印完整的消息

时间:2016-08-15 12:03:59

标签: perl encoding

我遇到以下代码块的问题

$URL .= (
          ($msgType =~ /(?:web)|(?:err)|(?:text)/i) ? '&text=' . enurl($text)
        : ($msgType =~ /(?:logo)/i) ? '&udh=%06%05%04%15%82%00%00&text=' . $code . delimit_bytes($text)
        : ($msgType =~ /^(?:tone)$/i)
        ? '&udh=' . delimit_bytes('0B0504158115810003660101') . '&text=' . delimit_bytes($text)
        : ($msgType =~ /^(?:etone)$/i) ? '&udh=' . delimit_bytes($text) . '&text=+'
        : ($msgType =~ /(?:unicode)/i) ? '&text=' . enurl(convert('latin1', 'unicode', $text)) . '&coding=3'
        : ""
      )

问题是$text是一条至少160个字符的消息。 $msgType是一个定义SMS消息类型的变量。上面处理完消息后,它将被限制为154个字符,其余部分将被删除。如何才能删除此消息的剩余部分?

函数delimit_bytes就是这样

sub delimit_bytes($) {
    my $var = shift;
    $var =~ s/(\w{2})/%$1/g;
    return $var;
}

最终结果是该消息应该连接到以下url

$URL = "http://localhost:$port/cgi-bin/sendsms?username=$user&password=$pass&to=$phone&dlr-mask=31";

这是我所包含的一些模块

use strict;
use warnings;
use Data::Dumper;
use IO::Handle;                                                  # used for the autoflush()  stuff
use LWP::UserAgent;
use DBI;
use CGI::Enurl;
use Unicode::Lite;
use POSIX qw(setsid strftime);

0 个答案:

没有答案