use strict; sub hex2rgb { my $hex = shift; if (my @data = ($hex =~ /\#((?:[0-9a-fA-F]){2})((?:[0-9a-fA-F]){2})((?:[0-9a-fA-F]){2})/)) { return join(',', map({ hex($_); } @data)); } else { die "Bad hex: ", $hex; } } print hex2rgb("#ff00ff"), "\n"; print hex2rgb("#fx00ff"), "\n";