#!/usr/bin/env perl use strict; use warnings; # Call this script with ./setpin.pl /dev/ttyUSB0 my $modem = shift; my $pin = shift; $SIG{ALRM} = sub { die("timeout: no response from modem $modem\n"); }; open(MODEM, "+<", $modem) or die("can't open modem $modem"); alarm(10); print(MODEM "AT+CPIN=\"$pin\"\n\r"); while () { if (m/OK/) { close(MODEM); print("PIN accepted\n"); exit(0); } if (m/ERROR/) { close(MODEM); print("PIN rejected\n"); exit(1); } }