in reply to Running Subroutines in Parallel

I'm not sure if you can do this in this particular case, but fork() might do the trick. Ofcourse you'd need some magic to gather the output afterwards. Just an idea, why don't you open the both at the same time, eg:
sub BothStat { $cpuoutput_time = time; $vmoutput_time = time; open (VMOUT, "$vmstat |"); open (CPUOUT, "$cpustat |"); @cpuoutput = <CPUOUT>; $vmoutput = <VMOUT>; close (CPUOUT); close (VMOUT); }