Just to be different (and because I don't like two element ranges):
#!/usr/bin/perl
my(@yearArray) = (1992, 1994, 1995, 1997, 1998, 1999, 2000, 2002, 2004
+, 2005, 2006, 2007, 2008);
my($anchor) = shift(@yearArray);
my(@out) = $anchor;
while (@yearArray > 1) {
my $tmp = shift(@yearArray);
push(@out, ($yearArray[0] == $anchor + 2 ? '-' : $tmp));
$anchor = $tmp;
}
push(@out, @yearArray);
my $out = join(', ', @out);
$out =~ s/(, -)+, /-/g;
print $out, "\n";
This assumes that each element of @yearArray is numeric and that it is sorted in ascending order.