Perera has played 125 ODIs since his debut in December 2009, with a very impressive strike-rate of 109 but an average of only 17.
As a bowler, he has taken 133 wickets at 32.62 apiece.
His form in the recent series, though, has come under some scrutiny. Perera made only 91 runs - at 18.20 - and picked up only four wickets in the ODIs against Pakistan and followed that with 19 runs and three wickets across three T20Is.
The 28-year-old will take over from opening batsman Tharanga under whose captaincy Sri Lanka suffered three 5-0 whitewashes this year.
Tharanga, 32, was skipper when Sri Lanka lost the series to India, South Africa and Pakistan this year without winning a game.
Having led Sri Lanka against Pakistan when they played in the United Arab Emirates, Tharanga and other senior team members refused to travel to Lahore for the Pakistan leg of the T20 series.
Besides the team's poor record under him, Tharanga also got into trouble twice due to slow over rates and was suspended.
The three One-dayers against India are scheduled to be held on December 10 in Dharamsala, December 13 in Chandigarh and December 17 in Visakhapatnam.
The T20 internationals are slated for December 20, December 22 and December 24 in Cuttack, Indore and Mumbai respectively.