package A1; use A2; use C; sub functionA { print "In A1: ".C::TYPE->{VEG}."\n"; A2::functionA(); } #### package A2; use C; sub functionA { print "In A2: ".C::TYPE->{VEG}."\n"; } #### package C; use A2; use constant { TYPE => { FRUIT => 1, VEG => 2, MEAT => 3, }, }; #### use A2; A2::functionA(); # prints "In A2: 2" #### use A1; A1::functionA(); # prints "In A1: 2\nIn A2: 2"