#!/usr/bin/env perl use strict; use warnings; my $Usage = "$0 file1 file2 > file2.new\n"; die $Usage unless ( @ARGV==2 and -f $ARGV[0] ); my ( $file1, $file2 ) = @ARGV; my %edit; open( IN, "<", $file1 ) or die "open failed on $file1: $!\n"; while () { my ( $type, $line ) = split; my $offset = ( $type eq '1gtiA' ) ? 0 : 1; $edit{$line}[$offset]++; } close IN; my @item_line = ( 0, 0 ); open( TBL, "<", $file2 ) or die "open failed on $file2: $!\n"; while () { my @edit_field = ( /(\S)(\S)\s*$/ ); my $changed = 0; for my $f ( 0, 1 ) { if ( $edit_field[$f] ne '-' ) { $item_line[$f]++; if ( exists( $edit{$item_line[$f]}[$f] )) { $edit_field[$f] = lc $edit_field[$f]; $changed++; } } } s/\S\S(\s*)$/join('',@edit_field,$1)/e if $changed; print; }