use threads;
use threads::shared;
my $var : shared;
####
use Me;
my $user : Me;
$user = "Random"; # this is OK
$user = "Deterministic"; # croaks
##
##
#!/usr/bin/perl
use strict;
use warnings;
package Me;
use Carp;
use overload '""' => \&str;
sub new {
my ($class, $value) = @_;
validate ($value) if defined $value;
bless \$value, $class;
}
sub validate {
my $value = shift;
my @names = qw (Random_Walk Random Walk);
croak "$value is not a good name\n" unless grep {$value eq $_} @names;
}
sub str {"Not telling you"};
1;
##
##
> perl -Mlib=. -MMe -le'my $m = new Me (Random);print $m'
Not telling you
> perl -Mlib=. -MMe -le'my $m = new Me (Determined);print $m'
Determined is not a good name
at -e line 1
# But I can not suss out how to get his to work
> perl -Mlib=. -MMe -le'my $m : Me; $m = "Random"; print $m'
Invalid SCALAR attribute: Me at -e line 1