c:\@Work\Perl>perl -MO=Deparse,-p -le "use warnings; use strict; ;; print qq{Perl ver.: Strawberry $]}; ;; package XX { use constant to_1 => 42; use constant to_2 => 999; } ;; package YY { use parent -norequire, 'XX'; use constant to_2 => 137; } ;; my $y = bless {} => 'YY'; ;; print $y->to_1; print $y->to_2; ;; print YY->to_1; print YY->to_2; ;; print XX::to_1; print XX::to_2; print YY::to_2; ;; print YY::to_1; " Name "YY::to_1" used only once: possible typo at -e line 1. BEGIN { $/ = "\n"; $\ = "\n"; } sub YY::to_2 () { 137 } sub XX::to_2 () { 999 } sub XX::to_1 () { 42 } use warnings; use strict 'refs'; print("Perl ver.: Strawberry $]"); package XX; sub BEGIN { require constant; do { 'constant'->import('to_1', 42) }; } use constant ('to_2', 999); package main; {;}; package YY; sub BEGIN { require parent; do { 'parent'->import((-'norequire'), 'XX') }; } use constant ('to_2', 137); package main; {;}; (my $y = bless({}, 'YY')); print($y->to_1); print($y->to_2); print('YY'->to_1); print('YY'->to_2); print(42); print(999); print(137); print(YY::to_1 $_); -e syntax OK