#!/usr/bin/perl -w -pi use strict; #use Data::Dumper; BEGIN { undef $/ } my %struct; sub new_name { my $block = shift; my $field = shift; my ($new) = grep /^$field\d?/, keys %{$struct{$block}{'new'}}; $new ||= $field; # print "replacing $_[0] with $block.$new\n"; # print Dumper $struct{$block}; return "$block.$new"; } foreach my $block (/()/gs) { my ($block_name) = $block =~ /^]*name=\"([^\"]+)\"/s; foreach my $field ($block =~ /(]*\/>|.*?<\/field>))/gs) { my ($field_name) = $field =~ /^]*name=\"([^\"]+)\"/s; $struct{$block_name}{'new'}{$field_name}++; $field_name =~ s/\d+$//; $struct{$block_name}{'old'}{$field_name}++; } } #print Dumper %struct; #exit 0; foreach my $block (keys %struct) { foreach my $field (keys %{ $struct{$block}{'old'} }) { s/($block(?:\.\w+)?\.$field)/new_name($block,$field,$1)/egs; } } s/processRollback/rollback/gs; s/jumpRecord/gotoRecord/gs; s/processQuery/executeQuery/gs;