http://www.perlmonks.org?node_id=11130679


in reply to grep only lines having matched pattern

My understanding of your requirement is that you only want to accept lines starting with a date not followed by a dash and a non-zero digit. I recommend using a module to match the date. My choice is no better than Tux's hand coded regex, but at least it makes the intention clear. It would be convenient if you have an additional requirement to match other date/time formats in your data.
use strict; use warnings; use Regexp::Common qw(time); my $DATE = $RE{time}{tf}{-pat => 'mm-dd-yyyy'}; my @data = <DATA>; my @wanted = grep {/^$DATE(?!-[1-9])/} @data; print @wanted; __DATA__ 03-15-2021-1 21.1.0-s103 2021/03/15:14:16:39 21.1 21.10-s103 03-15-2021-2 21.1.0-s103 2021/03/15:14:16:39 21.1 21.10-s103 03-15-2021 21.1.0-s102 2021/03/15:04:00:09 21.1 21.10-s102
Bill