After storming to 41 runs, the West Indies dismissed Perera (26) and Mahela Jayawardene for a duck as Sri Lanka sat on 43-2 after five overs.
The West Indies began to peg back their opponents by taking another wicket, but Sri Lanka passed 100 in the 15th over and eventually closed the innings on 160-6 following a quick-fire 40 from Angelo Mathews.
The West Indies had a torrid start to their reply when Lasith Malinga dismissed Chris Gayle (3) and Dwyane Smith (17) inside one over, leaving the side 28-2 after 30 balls.
Wickets began to tumble, but play was stopped with the West Indies on 80-4 when heavy rain and hail descended upon the field, which gave the umpires no choice but to call off the match.
India and South Africa will go head to head tomorrow for a spot in the final.