As a grammatical term, the word perfect can be a bit misleading.
Because the adjective perfect derives from a Latin verb meaning “to accomplish, to perform, to complete,” explanations of the perfect forms of the verb often begin something like this:
Perfect means “completed”; an action expressed in the perfect has been completed at some time in the past.”
The etymological connection with complete helps in explaining the past perfect (had+past participle) but is not as helpful with the present perfect (has/have+past participle).
The present perfect describes two main types of action:
1. An action that has been completed in the past, but that could occur again:
I have visited Paris several times.
I have watched A Christmas Story every December since 1994.
2. An action that began in the past but is still in progress.
I have lived in my house for nine years.
Queen Elizabeth II has reigned since 1952.
A common ESL error is to use the present perfect with a specific time marker such as yesterday, last week, last year, in the morning, etc.
For example, to say, “Yesterday I have met his mother” is incorrect. The simple past is used to make a statement about something that happened at a specific time in the past:” Yesterday, I met his mother.”
The present perfect expresses past events that took place at some indefinite time. The following examples illustrate the indefinite adverbs that can be used with it:
I have never seen a purple cow.
Have you ever met a movie star?
I have read this mystery before.
He hasn’t finished his homework yet.
The play has already started.
So far, he has scored six touchdowns.