Как указывает daxim, частные методы имеют префикс "_".Поскольку атрибуты (переменные экземпляра) генерируют методы получения (и если rw также устанавливает методы) из коробки, вы должны сделать это:
has 'myvariable' => (
is => 'ro',
writer => '_myvariable',
init_arg => undef,
# other options here
);
Таким образом, вы можете установить этот атрибут в своем классе / экземпляре, и этоне устанавливается снаружи.Если доступ только для чтения слишком велик, вы также можете пометить его как «частный»:
has '_myvariable' => (
is => 'ro',
writer => '_set_myvariable'
init_arg => undef,
# other options here
);