in reply to How do I easily turn a year array into a string
However, if you want to roll your own, something like this might do the trick:
(Note: this does only minimal data validation.)>perl -wMstrict -le "my @yrs = @ARGV ? shift @ARGV : (); for my $yr (@ARGV) { $yrs[-1] =~ m{ (\d+) \z }xms; next if $yr - $1 != 1 and push @yrs, $yr; $yrs[-1] =~ s{ (?: - \d+)? \z }{-$yr}xms; } print join q{, }, @yrs; " 1992 1994 1995 1997 1998 1999 2000 2002 2004 2005 2006 2007 2008 2008 2007 2007 2008 2009 1992, 1994-1995, 1997-2000, 2002, 2004-2008, 2008, 2007, 2007-2009
Update: Fixed original statement my @yrs = shift @ARGV if @ARGV; creating lexical array because such a creation should not be conditional, only its initialization.
|
|---|