use strict;
my $infile = 'c:/RZ_Q.008'; # is it the same input file every time?
####
my ( $yr, $mo, $dy ) = (localtime)[5,4,3];
my $outfile = sprintf( "%04d%02d%02d.txt",$yr+1900,$mo+1,$dy );
# (I tend to format date-as-filename so that it will be
# easy to sort file names chronologically: YYYYMMDD)
# you can add hours and minutes, if you like -- check
# `perldoc -f localtime`...
####
# (assign $infile, $outfile as above, open IN, OUT as in your post, then:
while () {
print OUT unless ( /774(0[346789]|1[123468])/ );
}
# but if the set of numerics to exclude changes regularly,
# you'll want to figure out how to convey the proper set
# to the script on start-up, and construct a regex along the
# lines shown in your original code.