#!C:\Perl\bin\perl -w $|++; print "Content-type: text/html\n\n"; # use strict; use warnings; use Time::HiRes; use threads; use threads::shared; my ($doc_top, $doc_middle, $doc_bottom); $doc_top = "\n"; $doc_top .= "\n"; $doc_top .= "\n\n"; $doc_top .= "\n"; $doc_top .= "\n\n"; $doc_top .= "\n"; $doc_top .= "\t\n"; $doc_top .= "\t\t\n"; $doc_bottom .= "\t\n"; $doc_bottom .= "
\n"; $doc_top .= "\t\t\t\n"; #$doc_top .= "\t\t\t\t\n"; $doc_middle =''; #$doc_bottom .= "\t\t\t\t\n"; $doc_bottom .= "\t\t\t
\n"; $doc_bottom .= "\t\t
\n\n"; #$doc_bottom .= "\n"; #$doc_bottom .= "\n"; for ($j = 0; $j <= 22; $j++) { $doc_middle .= "\t\t\t\t\n"; for ($i = 0; $i <= 2; $i++) { $doc_middle .= "\t\t\t\t\t \n"; } $doc_middle .= "\t\t\t\t\n"; } print $doc_top.$doc_middle.$doc_bottom; our (@rv, @pauses, @letters) : shared; #@rv[0,1,2, 3,4,5, 6, 7, 8] = (2, 5, 5,
@rv[0,1,2, 3,4,5, 6, 7, 8] = (int(rand(4))+2, int(rand(4))+2, int(rand(4))+2, int(rand(4))+2, int(rand(4))+2, int(rand(4))+2, int(rand(4))+2, int(rand(4))+2, int(rand(4))+2); #@pauses[0,1,2, 3,4,5, 6, 7, 8] = (0.325543212890625, 0.3333251953125, 0.345562744140625,
@pauses[0,1,2, 3,4,5, 6, 7, 8] = ((rand(1))+.3, (rand(1))+.3, (rand(1))+.3, (rand(1))+.3, (rand(1))+.3, (rand(1))+.3, (rand(1))+.3, (rand(1))+.3, (rand(1))+.3); @letters[0,1,2, 3,4,5, 6,7,8] = ('a','b','c', 'd','e','f', 'g','h','i'); my $cur_right_value; my $cur_pause; my $cur_letter; for($f = 0; $f <= 2; $f++) { $cur_right_value = @rv[$f];# print $cur_right_value; print "
\n"; $cur_pause = @pauses[$f]; # print $cur_pause; print "
\n"; $cur_letter = @letters[$f];# print $cur_letter; print "
\n"; print "for current letter $cur_letter repetitions ".($cur_right_value+1)." via pause $cur_pause sec
\n"; $thr = threads->new(sub { my $cur_var = 0; for($cur_var = $cur_var; $cur_var <= $cur_right_value; $cur_var++) { print "\n"; if(Time::HiRes::sleep($cur_pause)) { lock(@rv); lock(@pauses); lock(@letters); } if($cur_var == $cur_right_value) { # print "\$f = $f
\n"; $cur_right_value = @rv[0]+$cur_var; $cur_pause = @pauses[0]; $cur_letter = @letters[0]; shift @rv; # print @rv; print "
\n"; shift @pauses; # print @pauses; print "
\n"; shift @letters;# print @letters; print "
\n"; } } }); } shift @rv; shift @rv; shift @rv; # print @rv; print "
\n"; shift @pauses; shift @pauses; shift @pauses; # print @pauses; print "
\n"; shift @letters; shift @letters; shift @letters;# print @letters; print "
\n"; $thr->join; print "@letters
\n"; print "
\n"; print "\n"; print "\n";