my $decimal = qr(\d*\.?\d+); $_ = "0.12"; if ( m{(? $decimal)}x ) { say "$_ $+{value}"; } $_ = ".12"; if ( m{(? $decimal)}x ) { say "$_ $+{value}"; } $_ = "12."; if ( m{(? $decimal)}x ) { say "$_ $+{value}"; } $_ = "12"; if ( m{(? $decimal)}x ) { say "$_ $+{value}"; }