use strict; use List::Util qw(shuffle); use Parallel::ForkManager; my $multi_cpu_num = 2; my @chars_1 = split '', 'ACTCTGCATGCATACGCATCAGCATCAT'; my @chars_2 = split '', 'TAGCTCATGTCGATGCATGCTCGTCTCG'; my $pm = Parallel::ForkManager->new( $multi_cpu_num ); PWM: for my $pwm (1..5) { $pm->start and next PWM; my @chars_1_temp = shuffle @chars_1; my @chars_2_temp = shuffle @chars_2; print "this is $pwm....\n"; print join '',@chars_1_temp,"\n"; print join '',@chars_2_temp,"\n"; $pm->finish; } $pm->wait_all_children;