perl - Method name conflicts in Moose roles -


what achieve create moose class imports several roles. i've been doing years no issues, though stuck on why simple example below generate method name conflicts.

package logrole;  use moose::role; use posix; use namespace::autoclean;  package otherrole;  use moose::role; use file::temp; use namespace::autoclean;  package myclass;  use moose; use namespace::autoclean; 'logrole', 'otherrole';   package main;  use strict; use warnings; use myclass; 

running gives:

due method name conflicts in roles 'logrole' , 'otherrole', methods 'seek_cur', 'seek_end', , 'seek_set' must implemented or excluded 'myclass' @ /home/user/perl5/perlbrew/perls/perl-5.22.1/lib/site_perl/5.22.1/x86_64-linux/moose/exporter.pm line 419 moose::with('logrole', 'otherrole') called @ roles.pl line 29 

according docs can exclude method names when consuming role so:

package logrole;  use moose::role; use posix; use namespace::autoclean;  package otherrole;  use moose::role; use file::temp; use namespace::autoclean;  package myclass;  use moose; use namespace::autoclean; 'logrole', 'otherrole' => { -excludes => ["seek_cur", "seek_end", "seek_set" ] };  package main;  use strict; use warnings; use myclass; 

this solves name conflicts, problem solution trying import posix in otherrole generates hundreds of name conflicts, fix of excluding these in module myclass seems messy.

how can import (or write) these roles avoid method name conflicts?

namespace::autoclean doesn't remove methods, , trusts class::mop::class's get_method_list return them. confusingly, returns constants posix module.

if switch namespace::autoclean namespace::clean, problems gone.


Comments

Popular posts from this blog

What is happening when Matlab is starting a "parallel pool"? -

angular - DownloadURL return null in below code -

php - Cannot override Laravel Spark authentication with own implementation -