Regexp::Assemble
こんな感じになるらしい。
use Regexp::Assemble; my $re = Regexp::Assemble->new; $ra->add( 'ab+c' ); $ra->add( 'ab+-' ); $ra->add( 'a\w\d+' ); $ra->add( 'a\d+' ); print $ra->re; # prints a(?:\w?\d+|b+[-c])
うーん。大量に自動処理とか?
http://search.cpan.org/~dland/Regexp-Assemble-0.28/Assemble.pm