From the North, the main line between Florence and Rome has a station
at Terontola (on the branch line to Lake Trasimene, Perugia, Assisi,
Spello, and Foligno), so coming from Florence take one of the dozen
daily trains to Terontola/Cortona (1'/2 hr.) that meet up with a
connecting train to Perugia (35 to 50 min.).
From the South, the main line between Rome and Ancona has a station at
Foligno (on the branch line to Spello, Assisi, Perugia and Lake
Trasimene), so coming from Rome, take one of the nine daily trains on the
line to Ancona, stop at Foligno (1 hr., 40 min. to 2 hr.), where you can
transfer to a Perugia-bound train (30 to 35 min.).