int led=4;
What does this mean? ledPin means something.
delay(5000);
digitalWrite(led,LOW);
unsigned long currentMillis = millis();
delay() and millis() rarely belong in the same code. currentMillis is a stupid name. The variable holds the time that some event happened. The name of the variable should reflect that event. In this case, now is a MUCH more appropriate name.
You MUST determine when the switch BECOMES pressed, NOT when the switch IS pressed. THAT is the event that is important.