# 1210614.pl
package MyClass {
use Moose;
has FileName => (is => 'rw', isa => 'Str', writer => 'SetFileName');
sub SetFileName {
my $self = shift;
my $arg = shift;
warn "I am here with $arg";
}
};
package main {
my $obj = MyClass->new;
$obj->SetFileName('/foo/bar');
};
####
$ perl 1210614.pl
You are overwriting a locally defined method (SetFileName) with an accessor ...
####
# 1210614-1.pl
package MyClass {
use Moose;
has FileName => (is => 'rw', isa => 'Str', writer => 'SetFileName');
};
package main {
my $obj = MyClass->new;
$obj->SetFileName('/foo/bar');
warn $obj->FileName;
};
####
$ perl 1210614-1.pl
/foo/bar at 1210614-1.pl line 9.
####
# 1210614-2.pl
package MyClass {
use Moose;
has FileName => (is => 'rw', isa => 'Str', trigger => \&SetFileName);
sub SetFileName {
my $self = shift;
my $arg = shift;
warn "I am here with $arg";
}
};
package main {
my $obj = MyClass->new;
$obj->SetFileName('/foo/bar');
};
####
$ perl 1210614-2.pl
I am here with /foo/bar at 1210614-2.pl line 7.