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}"; } #### 0.12 0.12 .12 .12 12. 12 12 12