1)must have done 过去一定做了某事,只用于肯定句。
2)can’t/couldn’t have done 过去不可能做了某事
3)could have done “本来可以……”(表示过去没有实现的可能)。
4)may /might have done “本来可能……;本来应该或可以做某事”(实际没有发生;含有轻微的责备语气。
5)should/ought to have done “本来该做某事”(而实际未做)
6)should not/ought not to have done “本来不该做”(实际却做过了,含有责备语气)
7)needn’t have done “本来不必做”(但是已经做过了)
8)would rather have done “当时宁愿做了某事”(实际没有做过);
否定式would rather not have done, 表达相反意思“宁愿当时没有做某事”,两者都有后悔之意。