I think you will find it convenient to use Tie::File to edit your file in-place. Something like
use strict;
use warnings;
use Tie::File;
tie my @lines, 'Tie::File', filename or die ...;
for (@lines) {
s/(?=(\d+)$)/ 'Warning! ' if $1 < 4_000_000_000/e;
}