Just for the sake of showing another way to do it... ########################
my $input = "2-8,9,11,18-21"; $input =~ s/-/\.\./g; print join(',',eval($input)); ######################## or if you don't want to print out the list but iterate through it... ######################## my $input = "2-8,9,11,18-21"; $input =~ s/-/\.\./g; foreach(eval($input)){ ...do something } ######################### -----Original Message----- From: John W. Krahn [mailto:[EMAIL PROTECTED] Sent: Tue 8/31/2004 11:31 PM To: Perl Beginners Cc: Subject: Re: A simple way? A Perl way? <snip> > I am looking for a simple Perl way to decode the following, which can be any > grouping of number > > 2-8,9,11,18-21 > > Into > 2,3,4,5,6,7,8,9,11,18,19,20,21 $ perl -le' print join ",", map /(\d+)-(\d+)/ ? $1 .. $2 : $_, split /,/, "2-8,9,11,18-21"' 2,3,4,5,6,7,8,9,11,18,19,20,21