It's unclear whether or not the array can contain a valid
line which consists of the empty string or the character '0'.
either of these possibilities would break your code. This
problem can be fixed with:
@{$mon_obj->{FILE_DATA}}
= grep { defined $_ } @{$mon_obj->{FILE_DATA}};
Yes, that's an obvious refinement, which the original loop did not contain,
presumably because '' and '0' are either not present or not valid
so I preserved that behavior in the grep condition.