use Perlmazing qw(is_number to_number croak);
our @ISA = qw(Perlmazing::Listable);
sub main {
no warnings;
if (not defined $_[0]) {
$_[0] = 0;
} elsif (is_number $_[0]) {
my $copy = $_[0];
# Remove possible _ number separations
$copy =~ s/(\d)_(\d)/$1$2/g;
# Avoid octal interpretations
$copy =~ s/^0+//;
my $result = eval "$copy";
croak "Unexpected error with to_number(".dumped($copy)."): $@" if $@;
$result = 0 unless defined $result;
$_[0] = $result;
} else {
$_[0] =~ s/\D+//g;
$_[0] += 0;
}
}
1;