use strict; open(IN, $ARGV[0])||die "Cannot open $ARGV[0] for read:$!\n"; my @lines = ; close IN||die "Cannot close $ARGV[0]:$!\n"; open(OUT, ">$ARGV[0]")||die "Cannot open $ARGV[0] for write:$!\n"; foreach(@lines){ if(m/(^OBX\|)([^\|]*\|){2}([^\^]*)(.*$)/){ my $pre = $1 . $2; my $read = $3; my $post = $4; $read =~ s/[A-Z]/U$&/g; $read =~ s/[a-z]/L$&/g; $_ = $pre . $read . $post; } print OUT||die "Cannot write to $ARGV[0]:$!\n"; } close OUT||die "Cannot close $ARGV[0]:$!\n";