It could be written, but I'm not so sure a real kernel module could be run in Perl. Kernel modules run in one of the processor's privileged modes, which are the sole possession of the kernel. Perl-as-she-is runs in user mode and I don't know how to make the kernel do it any differently.
A "user-level driver" is a different story. Perl has ioctl for that, and it works well. I once wrote pieces of one and I'm very proud of it, even though it's still incomplete (ran into integer width trouble). It's the only time I ever wrote anything with ioctl.