First baseman Gerald Perry, who spent 1990 with the Kansas City Royals and then became a free agent, agreed to a three-year, $3.3 million contract with the St. Louis Cardinals. Perry hit .254 in 133 games for Kansas City last summer.