Bangladesh, who won the first two matches, never looked competitive once Chameera’s three-wicket burst in the opening spell reduced them to 28-3.
Mahmudullah Riyad top-scored with 53 while Mosaddek Hossain made 51 off 72 balls.
Debutant Ramesh Mendis claimed 2-40 and leg-spinner Wanindu Hasaranga played his part by also picking up two wickets.
Chameera was named player of the match while Bangladesh’s Mushfiqur Rahim, who scored 237 runs including a century in three innings, was named player of the series.
“We needed a win badly, although we lost the series,” said Perera.
“We needed to get the big scores and that’s why I shifted gears. Our bowling department did a really good job. Fielding was also good.”
The left-handed Perera, who took over from Dimuth Karunaratne as captain in this series, earlier smashed 11 fours and one six in his 122-ball knock to set up the win.
However, he was dropped on 66, 79 and 99 before being dismissed by teenage left-arm quick Shoriful Islam.
Mahmudullah took a fine catch at long-on after he dropped the opener one run away from his century.
Perera and Danushka Gunathilaka put on 82 runs for the first wicket to lay the foundations of their total before fast bowler Taskin Ahmed took three wickets.
Taskin bowled Gunathilaka for 39 and had Pathum Nissanka caught by Mushfiqur for a duck in the same over.
Perera shared two key partnerships of 69 runs and 65 for the third and fourth wicket respectively with Kusal Mendis (22) and De Silva to rebuild the Sri Lankan innings.
Bangladesh did well in the last 10 overs, giving away just 69 runs to check the batting surge.
“As I said in the last game, we have won the series but I never felt that we played the complete game. Never played to our potential,” said Bangladesh captain Tamim Iqbal.
“When opportunity came (today), we didn’t take our catches. If we had taken those, could have been maybe 30 runs lesser.”
Taskin, one of two changes for Bangladesh in the match, finished with figures of 4-46.
Get all the IPL news and Cricket Score here