s/([1-8])/"-" x $1/eg; s/1/-/g, s/2/--/g, s/3/---/g, s/4/----/g, s/5/-----/g, s/6/------/g, s/7/-------/g, s/8/--------/g; my @x = map {"-" x $_} 0..8; s/([1-8])/$x[$1]/g; 1 while s/([2-8])/-@{[$1-1]}/g; s/1/-/g; s/8/7-/g; s/7/33-/g; s/6/5-/g; s/5/22-/g; s/4/3-/g; s/3/11-/g; s/2/1-/g; s/1/-/g;