in reply to Package problems

The problem is that you are using our in one place and not the other. Either use our in both packages, or don't use it in either. Or put brackets around the package contents, like this:
package Dog { our $name="Odie"; } package Cat { $name = "Garfield"; print "$name says hello to $Dog::name. \n" ; }