>>61 Perl5 (もう少しスマートな書き方はあるかもしれないが…)

for (qw{[1] [2,3] [1,2,3] [1,3] [1,3,4,5]}) {
 @a = /(\d+)/g;
 %h = map{$_ => $_} @a;
 @b = map{$h{$_}//','} 1..1000;
 $"=','; $b = "@b";
 $b =~ s/^,*(.+?),*$/$1/;
 @c = split /,,+/, $b;
 @d = map{[eval]} @c;
 @e = map{@$_ > 2 ? "$$_[0]-$$_[-1]" : "@$_"} @d;
 print "@e\n";
}


実行結果
~ $ perl 17_61_resanc.pl
1
2,3
1-3
1,3
1,3-5