Are you really sure you want to spoil it for yourself so soon?
Here, I'll help you out. Here's a version of the program with some white space, normal variable and function names, and some of the micro-obfuscation removed.
1 @STATE = split //, ".URRUUxR"; 2 @data = split//,"\nrekcah xinU / lreP rehtona tsuJ"; 3 4 sub make_pipe_and_fork { 5 @pipestate{"r$fhno", "u$fhno"}=(P,P); 6 pipe "r$fhno", "u$fhno"; 7 ++$fhno; 8 ($pid *= 2) += $is_child = !fork(); 9 map { 10 $STATE=$STATE[$is_child ^ ord($pipestate{$_}) & 6]; 11 $pipestate{$_} = (/^$STATE/i ? $STATE : close $_); 12 } keys %pipestate 13 } 14 make_pipe_and_fork; 15 make_pipe_and_fork; 16 make_pipe_and_fork; 17 make_pipe_and_fork; 18 make_pipe_and_fork; 19 20 map { 21 $pipestate{$_} =~ /^[P.]/ && close $_ 22 } %pipestate; 23 24 wait until $?; 25 26 map { /^r/ ? <$_> : 1 } %pipestate; 27 28 $_ = $data[$pid]; 29 sleep rand(2) if /\S/; 30 print
It doesn't look so bad now, does it? Spend at least a little while trying to figure it out. If you do, you'll appreciate the solution that much more.
Hint 1 | Hint 2 | Hint 3 | Hint 4 | Hint 5 | Hint 6 | Hint 7 | Hint 8 | Hint 9 | Hint 10 | Hint 11
The solution really is here this time
Here's the plain-text version of the solution
Return to: Universe of Discourse main page | What's new page | Perl Paraphernalia | Obfuscation