use strict;
use warnings;
my $string= "012345678901234567890123456789";
$string = sprintf "%5s-%5s-%5s %5s-%5s-%5s",$string=~/(\d{5})/g;
print $string,$/;
####
use strict;
use warnings;
use Tie::Cycle;
tie my $cycle, 'Tie::Cycle', [ qw( - - ) ];
my $string= "012345678901234567890123456789";
$string =~ s/(\d{5})(?!\b)/$1$cycle/g;
print $string;