Emergency services were held up for almost five hours while engaged in a tense stand-off with a man on the roof of a busy Perth petrol station.