Скажем, вы делаете это на /dev/tty1.
в оболочке
chown *youruser* /dev/tty1
затем в Perl-скрипте с именем example.pl
open PORT, "</dev/tty1" || die "Can't open port: $!";
while (defined ($_ = <PORT>))
{
do_something($_);
}
close PORT;
Очевидно, что есть еще что сделать, если вы хотите, чтобы это запускалось автоматически, и респаун при ошибке и так далее. Но основная идея состоит в том, чтобы читать с последовательного порта как файл.