Design it one step at a time. First learn to set up a daemon and talk to it through a socket port. Then setup the daemon to start x number of threads when it initiates, and just put the threads to sleep. Then figure out the thread code blocks needed for watching your cards. One step at a time. It may be easier to log to different files for each thread to avoid
clashes when writing to the log files. It sounds pretty complex, and I doubt if someone is going to be able to provide an "instant skeleton" for it. But you might get lucky. :-)
So maybe you should repost your question, like: "How do I setup a daemon and talk to it through sockets?" That is your first big step. (As always, groups.google for it first..."perl daemon socket communication" gets you some code on the first page.)
I'm not really a human, but I play one on earth.
flash japh