in reply to insert null in missing rows

Hello ukhare,

What have you tried so far, and how has it fallen short of your requirements?

I think the basic algorithm is quite straightforward:

  1. Keeping track of the next expected timestamp, read through the file line by line:
  2. When the timestamp read is as expected, save the current line (unchanged) in an array;
  3. When the timestamp is not as expected, construct the missing line from the current date, the expected timestamp, and 6 nulls, and add it onto the array.
  4. After each line, update the expected timestamp by 10 minutes.
  5. When finished, rename the input file as a backup,
  6. and then overwrite the input file with the array of lines accumulated in steps 1 to 4 above.

The only tricky part is incrementing the timestamp. Here is one approach:

sub inc { my ($next) = @_; my ($hours, $mins, $secs) = split /:/, $next; $mins += 10; if ($mins >= 60) { ++$hours; $mins -= 60; } return sprintf '%02d:%02d:%02d', $hours, $mins, $secs; }

which you would call like this:

$next = inc($next);

Update: Changed $mins = 0; to $mins -= 60; to allow for the possibility that minutes are not multiples of 10.

Hope that helps,

Athanasius <°(((><contra mundum Iustus alius egestas vitae, eros Piratica,