Here it is tarted up a bit. Semi-tested. Let me know if the license is not appropriate. Refs: strictures, LWP::UserAgent, URI, Getopt::Long, and Pod::Usage.
#!/usr/bin/env perl
use strictures;
use LWP::UserAgent;
use URI;
use Getopt::Long;
use Pod::Usage;
GetOptions( help => \my $help,
"host=s" => \my $host,
"port=i" => \my $port,
"user=s" => \my $user,
"password=s" => \my $password,
"recipient=s" => \my $recipient,
"message=s" => \my $message,
);
pod2usage( -verbose => 2 ) if $help;
$host ||= "127.0.0.1";
$port ||= 9501;
$user ||= $ENV{OZEKI_NG_SMS_USER};
$password ||= $ENV{OZEKI_NG_SMS_PASSWORD};
pod2usage( -verbose => 2,
-message => "\nYou're missing required arguments.\n" )
unless $recipient and $user and $password;
my $size = $message ? length $message : 0;
pod2usage( -verbose => 0,
-message => "\nMessage is required, up to 140 characters.\n
+" )
unless $size > 0 and $size <= 140;
my $endpoint = URI->new("/api");
$endpoint->scheme("http");
$endpoint->host($host);
$endpoint->port($port);
$endpoint->query_form( action => "sendmessage",
username => $user,
password => $password,
recipient => $recipient,
messagetype => "SMS:TEXT",
messagedata => $message );
my $response = LWP::UserAgent
->new( agent => "OHAIbot/3.14")
->get($endpoint);
if ( $response->is_success )
{
print "Successfully sent.\n";
}
else
{
print join "\n\n",
"Nice going...",
$endpoint,
$response->decoded_content;
}
exit 0;
__END__
=pod
=head1 Name
Ozeki NG - SMS Gateway Perl example.
=head1 Prerequisite
Install Ozeki NG SMS Gateway, L<http://ozekisms.com>.
=head1 Synopsis
./ozeki-ng-sms -user ME -pass S3CR37 -r "1234567890" -m "OHAI DER"
=head2 Options
C<user>, C<password>, C<recipient>, and C<message> are required.
-help
-host # Default is 127.0.0.1
-port # Default is 9501
-user # or set OZEKI_NG_SMS_USER
-password # or set OZEKI_NG_SMS_PASSWORD
-recipient # SMS number
-message # Up to 140 characters
=head1 See also
L<http://perlmonks.org/?node_id=999542>.
=head1 License
Artistic 2.0.
=cut
Update, added prereq to Pod.