John Fitzgerald wrote: > > Hi, Hello,
> I'm fairly new to Perl, and trying to do a simple > operation on a text file exported from excel. > ID Enrolled Extraneous Columns.... > 3008 05-Aug-03 > 3008 05-Aug-03 > 3008 05-Aug-03 > 3008 05-Aug-03 > 3008 24-Sep-03 > 3009 11-Aug-03 > 3010 19-Nov-03 > 3010 11-Jul-03 > 3010 11-Jul-03 > 3010 11-Jul-03 > 3011 15-Jul-03 > As you can see, the dates for a given ID are > different. What I need to do, is set the dates all to > the earliest date for that ID (client-birth date). The > other columns are are important, but don't factor in > here. I'd appreciate any help. Thanks -John In order to compare the dates you need to rearrange the fields to a more comparable format like YYYYMMDD. my %mons = qw( Jan 01 Feb 02 Mar 03 Apr 04 May 05 Jun 06 Jul 07 Aug 08 Sep 09 Oct 10 Nov 11 Dec 12 ); my $mons = join '|', keys %mons; # convert dd-Mmm-yy to yyyymmdd sub conv_date { my ( $day, $mon, $yr ) = @_; # convert '51' to '1951' and '50' to '2050' # adjust to taste $yr = ( $yr > 50 ? 19 : 20 ) . $yr; return "$yr$mons{$mon}$day"; } my ( %record, $id ); while ( <DATA> ) { ( $id, my ( $old_date, @date ) ) = /^(\d+)\s+((\d+)-($mons)-(\d+))/ or do { print; next }; if ( not exists $record{ $id } or eof DATA ) { for my $key ( keys %record ) { for my $line ( @{ $record{ $key }{ lines } } ) { $line =~ s/\d+-(?:$mons)-\d+/$record{$key}{date}/; print $line; } } %record = ( $id => { date => $old_date, comp => conv_date( @date ), lines => [ $_ ], } ); } else { my $comp = conv_date @date; if ( $comp lt $record{ $id }{ comp } ) { $record{ $id }{ comp } = $comp; $record{ $id }{ date } = $old_date; } push @{ $record{ $id }{ lines } }, $_; } } __DATA__ ID Enrolled Extraneous Columns.... 3008 05-Aug-03 Extraneous Columns.... 3008 05-Aug-03 Extraneous Columns.... 3008 05-Aug-03 Extraneous Columns.... 3008 05-Aug-03 Extraneous Columns.... 3008 24-Sep-03 Extraneous Columns.... 3009 11-Aug-03 Extraneous Columns.... 3010 19-Nov-03 Extraneous Columns.... 3010 11-Jul-03 Extraneous Columns.... 3010 11-Jul-03 Extraneous Columns.... 3010 11-Jul-03 Extraneous Columns.... 3011 15-Jul-03 Extraneous Columns.... John -- use Perl; program fulfillment -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>