Посмотрите на overload
прагму. Я не думаю, что вы можете перегружать скалярный контекст, но попробуйте перегрузить строковое преобразование (которое обозначается ""
, , которое вы должны заключить в кавычки, став глупым '""'
, цитируя с помощью оператора q
make это более читабельно).
#!/usr/bin/env perl
use strict;
use warnings;
package MyObject;
use Moose;
use overload
q("") => sub { return shift->val() };
has 'val' => ( isa => 'Str', is => 'rw', required => 1);
package main;
my $obj = MyObject->new( val => 'Hello' );
print $obj; # Hello