in reply to Running tasks on remote Windows machines

Have a look Mark-Jason Dominus' Coping with Scoping article or broquaint's Lexical scoping like a fox. Basically, just about everywhere you're using local you should have used my instead. Please read at least one of these articles, then enable strict and warnings for your script and make it work under these constraints - it's not a lot of work when you've done it once or twice, and you'll be much much safer.

Also, my eye starts twitching when I see things like

local ($junk,$fulltime) = split(/is /,$j); Please please don't do that. Whenever you read a variable name like $junk, $trash or similar, all alarms should go off at full volume. What you want in this particulae case is my ($fulltime) = $j =~ /is (.*)/; All the other similar instances can be rephrased along the same lines.

Makeshifts last the longest.