in reply to How do I easily turn a year array into a string

Here is a different approach using join and a couple of regular expressions. If the array was not already sorted you could just insert a sort { $a <=> $b } into the join line.

use strict; use warnings; my @yrArr = ( 1992, 1994, 1995, 1997, 1998, 1999, 2000, 2002, 2004, 2005, 2006, 2007, 2008, ); my $yrStr = join q{, }, @yrArr; $yrStr =~ s{(\d+), (?=(\d+))}{ $2 - $1 == 1 ? qq{$1-} : qq{$1, } }eg; $yrStr =~ s{(-\d+)+(?=-)}{}g; print qq{$yrStr\n};

The output.

1992, 1994-1995, 1997-2000, 2002, 2004-2008

I hope this is useful.

Cheers,

JohnGG