use strict;
use warnings;
print decorate("This string is decorated", [255,125,125], [255,255,0], 2); print "
";
print decorate("This string is decorated", [125,0,255], [0,255,0], 2); print "
";
sub decorate {
my ($str, $left, $right, $size) = @_;
my @step;
$step[$_] = ($right->[$_] - $left->[$_]) / (length($str) - 1) for (0 .. 2);
my @chars = split //, $str;
foreach (0 .. $#chars) {
$chars[$_] = sprintf("$chars[$_]", $size, $left->[0] + $_ * $step[0], $left->[1] + $_ * $step[1], $left->[2] + $_ * $step[2]);
}
return join("", @chars);
}