我遇到以下代码块的问题
$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);