#!/usr/bin/perl -l use strict; use warnings; my @numbers = ( 23, '1,234', '2,2', '12,234,567', -1, '-12,234', '-23,23', '999,999', 0 ); foreach my $number (@numbers) { if (my @sections = $number =~ /^(-?\d{1,3})(?:,(\d\d\d))*$/) { print join '', grep {defined} @sections; } else { # not a valid number } }