Perry became an unrestricted free agent after the Ducks bought out the last two years of his contract June 19.
"You look at where [the Stars] were this year and the personnel that they have up and down the lineup. I want to win again and I think Dallas is a great fit for me," Perry said in a statement. "Signing Joe Pavelski is another big bonus for that hockey team."
Former Sharks captain Joe Pavelski signed a three-year, $21 million deal with Dallas.
Perry, 34, signed an eight-year, $69 million contract in 2013 that had a cap hit of $8.625 million. After having knee surgery in September, Perry played in only 31 games last season, registering 10 points.
That was a far cry from his glory days when he made four All-Star Games. Having played his entire 13-year career with Anaheim -- going back to their Mighty Ducks days -- Perry won a Stanley Cup with the team in his second season in the league as a 21-year-old in 2006-07.
He led the league with 50 goals in 2010-11 and won the Hart Trophy -- marking the only MVP in team history. After signing his most recent contract, Perry posted 43 goals and 39 assists the next season. The Ducks lost in the second round of the playoffs but went to the conference finals in two of the next three seasons and always looked like a Cup contender.
Since 2016-17, however, Perry's production has fallen. He had just 19 goals that season and 17 the next year before his injury-plagued campaign of 2018-19.
The Stars are also expected to sign 33-year-old defenseman Andrej Sekera to a one-year, $1.5 million deal, according to reports. The last two years of his contract was bought out by the Oilers.
The Stars also re-signed 23-year-old goalie Landon Bow to a one-year, two-way contract Monday. He appeared in two games for the Stars last season.