If you're splitting a date into its components, why not use a Date module?
use Time::Piece;
my $time = Time::Piece->strptime("20050622", "%Y%m%d");
my ($tyear, $tmon, $tday) = ($time->year, $time->mon, $time->mday)
Ok, it's not quite as small as a straight regex match, but quite often when you are playing with dates manually like this, it pays to use a module like Time::Piece, DateTime or even Date::Manip. The advantages now don't seem worth it - but as you start to work with dates more, you'll appreciate having objects for them so you can do calculations on them without missing things.
$h=$ENV{HOME};my@q=split/\n\n/,`cat $h/.quotes`;$s="$h/."
."signature";$t=`cat $s`;print$t,"\n",$q[rand($#q)],"\n";