Electing to bat first, Sri Lanka was reduced to 194 for 6 but recovered well to post 310 for 9 in its 50 overs, before it bowled Pakistan out for 233 all out in 43.5 overs.
Pakistan lost Sharjeel Khan (11) early but Ahmed Shehzad (56) and Mohammad Hafeez (62) added 96 for the second wicket to lift the team to 114 for 1. However, Pakistan lost its nine wickets for 119 runs from there on.
Hafeez, who struck 11 boundaries, was dismissed by Seekkuge Prasanna in the 19th over. Tillakaratne Dilshan then had Umar Akmal caught behind for 1. Misbah-ul-Haq (36) and Sohaib Maqsood (9) fell to the left-arm spin of Rangana Herath before Perera cleaned up the tail. Lasith Malinga, Herath and Prasanna chipped in with two wickets each.
Earlier, Sri Lanka found itself in a spot of bother but Mahela Jayawardena and Angelo Mathews revived the innings with a 122-run stand for the fourth wicket. Jayawardena was dismissed by Hafeez in the 34th over, triggering a mini slump as Sri Lanka slipped further to 194 for 6.
Perera and Angelo Mathews then collaborated to stitch a 87-run stand off just 57 balls before Mathews was caught at mid wicket off Wahab Riaz for 93. Sri Lanka amassed 101 runs in last the 10 overs to post a competitive target. Hafeez finished with 3 for 39 while Riaz ended with figures of 4 for 65.
Pakistan was without the services of Younis Khan, who had to fly back home due to a death in the family. The third and final ODI will be played in Dambulla on Saturday.(SLC/KH)