In response to part a) of your question, you can send Tor a SIGHUP. This won't kill the process, merely cause it to reload its configuration file, and create a new circuit.
In your script you could either use kill
(using system()
, etc.), in which case you'd need to know the pid of the Tor process you're controlling, or pkill
, though in the case of the latter, you'd have no way of distinguishing between different Tor processes (if you were running more than one).
kill -SIGHUP <pid_of_tor>
Or:
pkill -SIGHUP tor
This assumes you're on a Linux box. I believe OS X has the similar -HUP
signal, and I imagine Windows does too. Check the man
page for more signals that can be handled by the process.
With regards to part b) of your question, I don't have any Perl-specific suggestions. If you're open to other scripting languages, have a look at Stem - a fully featured Python API - or one of the other controller libraries listed on Stem's FAQ page.