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); }