Perron was selected in the first round, 26th pick by the St. Louis Blues in the 2007 NHL Entry Draft. He played with the Saint-Jérôme Panthers of the Quebec Junior AAA Hockey League for 51 games in the 2005–06 season. He then had an excellent rookie season in the QMJHL, leading the Lewiston Maineiacs in scoring with 39 goals and 83 points in 70 games played. The Maineiacs won the President's Cup and participated in the Memorial Cup. On October 2, 2007, it was confirmed that Perron would start the season with the St. Louis Blues after an impressive training camp. His progression was impressive because, less than three years before playing his first NHL game, he was still playing at the Midget B level in his hometown of Fleurimont. On November 3, 2007 Perron scored his first career goal against the Chicago Blackhawks. He played throughout the season and scored his first NHL hat trick on November 10, 2009 against the Vancouver Canucks.
During the summer of 2010, Perron signed a two-year contract worth $4.3 million with the Blues. Perron scored five goals in his first ten games of the 2010–11 season. An injury-shortened 2011–12 NHL season saw Perron score 42 points in 57 games played. That post-season he scored the series winning of goal of the Blues' first round matchup against the San Jose Sharks by deflecting Alex Pietrangelo's shot into the net breaking a 1-1 tie with 8 minutes remaining in game 5 on April 21, 2012. On July 5, 2012, Perron signed a four-year, $15.25 million contract with the Blues. Perron was traded to the Edmonton Oilers on July 10, 2013 in exchange for Magnus Paajarvi and a 2014 second-round draft pick.
On January 2, 2015, Perron was traded by the Oilers to the Pittsburgh Penguins for Rob Klinkhammer and a first-round pick. He made his debut a night later scoring the Penguins lone goal in a 4–1 loss to the Montreal Canadiens.
In the 2015–16 season, Perron was unable to continue his earlier success with the Penguins. In line to record his lowest points totals since entering the league with 16 in 43 games, he was traded for a second consecutive season, alongside Adam Clendening to the Anaheim Ducks in exchange for forward Carl Hagelin on January 16, 2016.
As a free agent from the Ducks, Perron opted to return to his original club, the St. Louis Blues, in agreeing to a two-year contract on July 1, 2016. In the 2016–17 season, Perron rebounded offensively to score 18 goals and 46 points in appearing in every game with the Blues.
On June 21, 2017, Perron's stint with the Blues was cut short as he was left exposed and selected by the Vegas Golden Knights at the 2017 NHL Expansion Draft.
Perron and his wife, Vanessa Perron (née Vandal), have two children, Mason and Victoria. They share a home in Canada with their two dogs, Jack and Stella, and their calico cat Alice. During the off season, Perron enjoys time at the lake on his boat. He has also contributed to the Athletes for Animals community.