1)should/ought to have done——表示过去应该做的
却没有做，常含有后悔、责备、埋怨的口吻，意为“本应该”，“应该就好了”; e.g. With all the work finished, I should have gone to your birthday party last night.
2)shouldn’t/ought not to have done——表示过去不该
e.g. You shouldn’t have gone back to work yesterday without the doctor’s permission.
3)must have done——表示对过去的事情较有把握
e.g. Since the ditch is full of water, it must have rained last night.
4)may/might have done——表示对过去的事情的推
测，但不十分有把握，意为“可能，或许已经”。 e.g. A traffic accident happened yesterday and a driver may have been hurt.
5)could have done——表示过去有可能或有能力做某
事，而实际未做、未能实现的事;有时也表示轻度批评，意为“本来可以，完全可以”。 e.g. The gas leakage could have been avoided if the
gas company took immediate measures after the warning call.
6)needn’t have done——表示过去做了某事，但没有做的必要，意为“其实没有必要”。 e.g. I needn’t have bought all that wine——only three people came.
would rather, would sooner, would (just) as soon, had rather, had better, had sooner, cannot but, may/might as well
[例1]You all those calculations! We have a computer to do that sort of thing.
A. needn’t have done B. must not have done
C. shouldn’t have done D. can’t have done
[例2]I to him because he phoned me shortly afterwards.
A. ought to have written B. must have written
C. couldn’t have written D. needn’t have written
[例3]You those letters. Why didn’t you
A. should post B. must have posted
C. should have posted D. ought to post