I arrived to KL at 7a.m. Instead of travelling by plane, I travelled by train which was much cheaper. The trip is about 6-7 hours, cost MYR 33 (USD$10) for 2nd class seat , MYR39 (USD$12.50) for 2nd class sleeper, MYR114-135 (USD$36-43) for 1st class deluxe sleeper (private cabin sleeper with private shower /toilet and LCD TV). Note that this is cheaper than the 4-5 hr bus ride which cost about USD$24, and definitely cheaper than the cheapest Air ticket you can find.
The easiest , cheapest, and best way to buy the ticket is to just book from http://www.ktmb.com.my/ , which you can pay by credit card and print out your own ticket (or collect the tickets at any Malaysian KTM railway station including Singapore Woodlands). You can also buy it from the station or call the KTM (Malaysian Railways) call centre.
You just need to buy 2 tickets (1 from Singapore Woodland to JB Sentral and another one from JB Sentral to KL Sentral). This way, you will only be charged more for the short 5 minutes Woodland-JB Sentral section and pay Malaysian cheaper price for the longer JB Sentral-KL Sentral section. For example, you can buy a 2nd class seat from Woodland-JB Sentral, then 1st class sleeper from JB Sentral-KL Sentral. Once the train gets to JB Sentral (5 mins ride), then walk over to your 1st class cabin.
Batu Caves Sri Subramaniam Temple, Kuala Lumpur 68100, Malaysia
Batu Caves is a limestone hill comprising three major caves and a number of smaller ones. The cave is one of the most popular Hindu shrines outside India.
there is a KTM Komuter train from Sentral to Batu Caves. The train costed only RM2/person/one way. Most blogs and guidebooks suggested getting there by bus ,and taxi would ask 80RM for a KLCC-Batu round trip. The train took 30 mins and stops right infront of the cave!