It was Perron's second career three-goal performance for the Oilers, who notched back-to-back wins for the first time in more than a month.
Jesse Joensuu's goal 2:20 into the third period snapped a 2-2 tie.
Ilya Bryzgalov earned the victory with 25 saves.
Jordan Schroeder netted both goals for Vancouver, which failed to build on its 5-4 overtime win Sunday against Phoenix.
Roberto Luongo stopped 16-of-20 shots.