in reply to sharing structures

You're defining T_Row in more than one place. There are two possibilities here:

1) Both versions of T_Row should be identical (and hopefully are). If this is the case, then it should be moved out into a separate module (perhaps named T_Row.pm?) which is used by both CreateXML and CreateXML2. Or it may work better in your case to merge CreateXML and CreateXML2 into a single source file. The important thing (at this point) simply being that T_Row only gets defined in one place, although you may wish to consider what will make it easier if you later need to add CreateXML3, CreateXML4, etc.

Aside from fixing your current problem, this also has the advantage of ensuring that it will always be the same everywhere it's used, since something only defined in one place can't get out of sync with itself nearly as easily as something defined multiple places.

2) The two versions of T_Row should be different. In this case, they should have different names to avoid confusion, both for Perl and for the eventual maintenance programmer (who may or may not be you).