use strict; use warnings; use MooseX::Declare; class Foo { use MooseX::Types::Moose qw(Num); method print_number (Num $num) { print "Yep. ($num) is a number.\n\n"; } method regex_number_then_print (Num $num) { $num =~ /(\d*\.\d+)/; print " ** I found ($1) during regex.\n"; $self->print_number($1); } method regex_number_then_print_with_quotes (Num $num) { $num =~ /(\d*\.\d+)/; print " ** I found ($1) during regex.\n"; $self->print_number("$1"); } method regex_number_then_print_with_intermediate_var (Num $num) { $num =~ /(\d*\.\d+)/; print " ** I found ($1) during regex.\n"; my $tmp = $1; $self->print_number($tmp); } } package main; my $obj = Foo->new; print "###### Directly printing number #####\n"; $obj->print_number('1.7'); print "###### Directly printing quoted number #####\n"; $obj->regex_number_then_print_with_quotes('1.7'); print "###### Directly printing number after intermediate variable laundering #####\n"; $obj->regex_number_then_print_with_intermediate_var('1.7'); print "###### Directly printing number from capture variable \$1 #####\n"; $obj->regex_number_then_print('1.7');