If you run your Perl script in DOS the "normal" way, it will block until it finishes executing before DOS can accept another command, so you'll need to use "start" to start it as a new process, separate from the DOS window, e.g.
Code:
C:\script>start perl a.pl
C:\script>start perl b.pl
C:\script>start perl c.pl
Each Perl script will open a new console window though as if you double-clicked its PL file. If you don't want a console window, you can use wperl, just substitute it for "perl" in those commands (start wperl a.pl)... wperl doesn't use a console window, but you also won't be able to see its STDOUT, so if that's a problem you can send its output into a file through DOS.
Code:
C:\script>start wperl a.pl > a.txt
then all STDOUT and STDERR (or basically anything that'd be shown in a console window) from a.pl would go to a.txt
As an alternative, you can use threads and make it all one Perl process.
Code:
use threads;
my $a = threads->create (sub {
do "a.pl";
});
$a->detach; # separate it from main thread
my $b = threads->create (sub {
do "b.pl";
});
$b->detach;
Since your scripts would have run independently to begin with, threads should work fine in this case. But if they were going to interact with one another, you'd need threads::shared to share variables among them, since threads generally are their own Perl processes (as if you'd run wperl on all the different PL files and they all spawned as different processes)... just they're tied together in just one process.