sub do_work { my @working_block = @input_data[$start .. $stop]; my @partial_output_data; $, = undef; $\ = undef; my $output_line = 0; for (my $i = 0; $i < @working_block; $i += $files) { # calculates the stddev of each slice and outputs the formatted resuls if (max(@working_block[$i .. $i + $files - 1]) == 0) { $partial_output_data[$output_line] = '0.00000E+00'; } else { $partial_output_data[$output_line] = sprintf('%.5E', stddev(@working_block[$i .. $i + $files - 1]) / mean(@working_block[$i .. $i + $files - 1])); } $output_line++; } @ReturnData[$start / $files .. $stop / $files] = @partial_output_data; return; }