train: 967973,0,4
Mon Jan 26 16:54:12 2026 2026-01-26T16:54:12Z plat dest scheduled estimated __218983 Stations on the Cranbourne and Pakenham lines will be affected by temporary car park closures and changes to pedestrian access at select times. These impacts are due to works as part of the Level Crossing Removal Project, Car Parks for Commuters program and other maintenance works. _*344824 From 8.30pm Monday 29 September 2025 until August 2026, there will be changes to the way you access and exit the station, due to escalator upgrade works. ** current, _* Later today, __ in the future Final stop Westall
2 1234 2026-01-26T23:35:00Z 10:35:00 400m48s 24048 no est disruptions 344824 218983
2 1235 2026-01-26T23:38:00Z 10:38:00 403m48s 24228 no est disruptions 344824 218983
2 1236 2026-01-26T23:41:00Z 10:41:00 406m48s 24408 no est disruptions 344824 218983
4 1118 Malvern Station 2026-01-26T23:49:00Z 10:49:00 414m48s 24888 no est disruptions 344824 218983
4 1036 Caulfield Station 2026-01-26T23:52:00Z 10:52:00 417m48s 25068 no est disruptions 344824 218983
2 1034 Carnegie Station 2026-01-26T23:54:00Z 10:54:00 419m48s 25188 no est disruptions 344824 218983
2 1138 Murrumbeena Station 2026-01-26T23:56:00Z 10:56:00 421m48s 25308 no est disruptions 344824 218983
2 1098 Hughesdale Station 2026-01-26T23:57:00Z 10:57:00 422m48s 25368 no est disruptions 344824 218983
2 1150 Oakleigh Station 2026-01-27T00:00:00Z 11:00:00 425m48s 25548 no est disruptions 344824 218983
2 1099 Huntingdale Station 2026-01-27T00:02:00Z 11:02:00 427m48s 25668 no est disruptions 344824 218983
2 1040 Clayton Station 2026-01-27T00:05:00Z 11:05:00 430m48s 25848 no est disruptions 344824 218983
2 1208 Westall Station 2026-01-27T00:08:00Z 11:08:00 433m48s 26028 no est disruptions 344824 218983
$perl_scalar = { 'departures' => [ { 'at_platform' => 'false', 'departure_note' => 'via Metro Tunnel', 'departure_sequence' => 1, 'direction_id' => 10, 'disruption_ids' => [ 344824, 218983 ], 'estimated_departure_utc' => undef, 'flags' => '', 'platform_number' => '2', 'route_id' => 11, 'run_id' => 967973, 'run_ref' => '967973', 'scheduled_departure_utc' => '2026-01-26T23:35:00Z', 'skipped_stops' => [], 'stop_id' => 1234 }, { 'at_platform' => 'false', 'departure_note' => 'via Metro Tunnel', 'departure_sequence' => 2, 'direction_id' => 10, 'disruption_ids' => [ 344824, 218983 ], 'estimated_departure_utc' => undef, 'flags' => '', 'platform_number' => '2', 'route_id' => 11, 'run_id' => 967973, 'run_ref' => '967973', 'scheduled_departure_utc' => '2026-01-26T23:38:00Z', 'skipped_stops' => [], 'stop_id' => 1235 }, { 'at_platform' => 'false', 'departure_note' => '', 'departure_sequence' => 3, 'direction_id' => 10, 'disruption_ids' => [ 344824, 218983 ], 'estimated_departure_utc' => undef, 'flags' => '', 'platform_number' => '2', 'route_id' => 11, 'run_id' => 967973, 'run_ref' => '967973', 'scheduled_departure_utc' => '2026-01-26T23:41:00Z', 'skipped_stops' => [], 'stop_id' => 1236 }, { 'at_platform' => 'false', 'departure_note' => '', 'departure_sequence' => 4, 'direction_id' => 10, 'disruption_ids' => [ 344824, 218983 ], 'estimated_departure_utc' => undef, 'flags' => '', 'platform_number' => '4', 'route_id' => 11, 'run_id' => 967973, 'run_ref' => '967973', 'scheduled_departure_utc' => '2026-01-26T23:49:00Z', 'skipped_stops' => [], 'stop_id' => 1118 }, { 'at_platform' => 'false', 'departure_note' => '', 'departure_sequence' => 5, 'direction_id' => 10, 'disruption_ids' => [ 344824, 218983 ], 'estimated_departure_utc' => undef, 'flags' => '', 'platform_number' => '4', 'route_id' => 11, 'run_id' => 967973, 'run_ref' => '967973', 'scheduled_departure_utc' => '2026-01-26T23:52:00Z', 'skipped_stops' => [], 'stop_id' => 1036 }, { 'at_platform' => 'false', 'departure_note' => '', 'departure_sequence' => 6, 'direction_id' => 10, 'disruption_ids' => [ 344824, 218983 ], 'estimated_departure_utc' => undef, 'flags' => '', 'platform_number' => '2', 'route_id' => 11, 'run_id' => 967973, 'run_ref' => '967973', 'scheduled_departure_utc' => '2026-01-26T23:54:00Z', 'skipped_stops' => [], 'stop_id' => 1034 }, { 'at_platform' => 'false', 'departure_note' => '', 'departure_sequence' => 7, 'direction_id' => 10, 'disruption_ids' => [ 344824, 218983 ], 'estimated_departure_utc' => undef, 'flags' => '', 'platform_number' => '2', 'route_id' => 11, 'run_id' => 967973, 'run_ref' => '967973', 'scheduled_departure_utc' => '2026-01-26T23:56:00Z', 'skipped_stops' => [], 'stop_id' => 1138 }, { 'at_platform' => 'false', 'departure_note' => '', 'departure_sequence' => 8, 'direction_id' => 10, 'disruption_ids' => [ 344824, 218983 ], 'estimated_departure_utc' => undef, 'flags' => '', 'platform_number' => '2', 'route_id' => 11, 'run_id' => 967973, 'run_ref' => '967973', 'scheduled_departure_utc' => '2026-01-26T23:57:00Z', 'skipped_stops' => [], 'stop_id' => 1098 }, { 'at_platform' => 'false', 'departure_note' => '', 'departure_sequence' => 9, 'direction_id' => 10, 'disruption_ids' => [ 344824, 218983 ], 'estimated_departure_utc' => undef, 'flags' => '', 'platform_number' => '2', 'route_id' => 11, 'run_id' => 967973, 'run_ref' => '967973', 'scheduled_departure_utc' => '2026-01-27T00:00:00Z', 'skipped_stops' => [], 'stop_id' => 1150 }, { 'at_platform' => 'false', 'departure_note' => '', 'departure_sequence' => 10, 'direction_id' => 10, 'disruption_ids' => [ 344824, 218983 ], 'estimated_departure_utc' => undef, 'flags' => '', 'platform_number' => '2', 'route_id' => 11, 'run_id' => 967973, 'run_ref' => '967973', 'scheduled_departure_utc' => '2026-01-27T00:02:00Z', 'skipped_stops' => [], 'stop_id' => 1099 }, { 'at_platform' => 'false', 'departure_note' => '', 'departure_sequence' => 11, 'direction_id' => 10, 'disruption_ids' => [ 344824, 218983 ], 'estimated_departure_utc' => undef, 'flags' => '', 'platform_number' => '2', 'route_id' => 11, 'run_id' => 967973, 'run_ref' => '967973', 'scheduled_departure_utc' => '2026-01-27T00:05:00Z', 'skipped_stops' => [], 'stop_id' => 1040 }, { 'at_platform' => 'false', 'departure_note' => '', 'departure_sequence' => 12, 'direction_id' => 10, 'disruption_ids' => [ 344824, 218983 ], 'estimated_departure_utc' => undef, 'flags' => 'E', 'platform_number' => '2', 'route_id' => 11, 'run_id' => 967973, 'run_ref' => '967973', 'scheduled_departure_utc' => '2026-01-27T00:08:00Z', 'skipped_stops' => [], 'stop_id' => 1208 } ], 'directions' => { '10' => { 'direction_id' => 10, 'direction_name' => 'Pakenham', 'route_id' => 11, 'route_type' => 0 } }, 'disruptions' => [ { 'colour' => '#ffbb00', 'description' => 'Southern Cross Station: From 8.30pm Monday 29 September 2025 until August 2026, there will be changes to the way you access and exit the station, due to escalator upgrade works.', 'display_on_board' => 'true', 'display_status' => 'false', 'disruption_id' => 344824, 'disruption_status' => 'Current', 'disruption_type' => 'Station detour', 'from_date' => '2025-09-25T05:13:00Z', 'last_updated' => '2025-09-29T04:38:47Z', 'published_on' => '2025-09-25T05:26:57Z', 'routes' => [], 'stops' => [], 'title' => 'Southern Cross Station: From 8.30pm Monday 29 September 2025 until August 2026, there will be changes to the way you access and exit the station, due to escalator upgrade works.', 'to_date' => '2026-08-31T17:00:00Z', 'url' => 'http://ptv.vic.gov.au/live-travel-updates/article/page/news-and-resources/news/southern-cross-station-escalator-upgrade/' }, { 'colour' => '#ffd500', 'description' => 'Stations on the Cranbourne and Pakenham lines will be affected by temporary car park closures and changes to pedestrian access at select times. These impacts are due to works as part of the Level Crossing Removal Project, Car Parks for Commuters program and other maintenance works.', 'display_on_board' => 'false', 'display_status' => 'false', 'disruption_id' => 218983, 'disruption_status' => 'Current', 'disruption_type' => 'Planned Closure', 'from_date' => '2020-12-14T21:57:00Z', 'last_updated' => '2026-01-21T23:38:51Z', 'published_on' => '2020-12-14T22:10:18Z', 'routes' => [], 'stops' => [], 'title' => 'Cranbourne and Pakenham line stations: Temporary car park closures and changes to pedestrian access until late 2025', 'to_date' => undef, 'url' => 'http://ptv.vic.gov.au/live-travel-updates/article/cranbourne-and-pakenham-line-stations-temporary-car-park-closures-and-changes-to-pedestrian-access-until-2022' } ], 'routes' => { '11' => { 'geopath' => [], 'route_gtfs_id' => '2-PKM', 'route_id' => 11, 'route_name' => 'Pakenham', 'route_number' => '', 'route_type' => 0 } }, 'runs' => { '967973' => { 'destination_name' => 'Westall', 'direction_id' => 10, 'express_stop_count' => 3, 'externalService' => undef, 'final_stop_id' => 1208, 'geopath' => [], 'interchange' => { 'distributor' => { 'advertised' => 'false', 'destination_name' => 'Town Hall', 'direction_id' => 1, 'route_id' => 11, 'run_ref' => '967978', 'stop_id' => 1235 }, 'feeder' => { 'advertised' => 'true', 'destination_name' => 'Town Hall', 'direction_id' => 1, 'route_id' => 14, 'run_ref' => '990602', 'stop_id' => 1235 } }, 'route_id' => 11, 'route_type' => 0, 'run_id' => 967973, 'run_note' => '', 'run_ref' => '967973', 'run_sequence' => 0, 'status' => 'scheduled', 'vehicle_descriptor' => undef, 'vehicle_position' => undef } }, 'status' => { 'health' => 1, 'version' => '3.0' }, 'stops' => { '1034' => { 'route_type' => 0, 'stop_distance' => '0', 'stop_id' => 1034, 'stop_landmark' => '', 'stop_latitude' => '-37.88624', 'stop_longitude' => '145.058578', 'stop_name' => 'Carnegie', 'stop_sequence' => 0, 'stop_suburb' => 'Carnegie', 'stop_ticket' => { 'is_free_fare_zone' => 'false', 'ticket_checks' => 'false', 'ticket_machine' => 'true', 'ticket_type' => '', 'ticket_zones' => [ 1 ], 'vline_reservation' => 'false', 'zone' => 'Zone 1' } }, '1036' => { 'route_type' => 0, 'stop_distance' => '0', 'stop_id' => 1036, 'stop_landmark' => '', 'stop_latitude' => '-37.8774567', 'stop_longitude' => '145.042526', 'stop_name' => 'Caulfield', 'stop_sequence' => 0, 'stop_suburb' => 'Caulfield East', 'stop_ticket' => { 'is_free_fare_zone' => 'false', 'ticket_checks' => 'false', 'ticket_machine' => 'true', 'ticket_type' => '', 'ticket_zones' => [ 1 ], 'vline_reservation' => 'false', 'zone' => 'Zone 1' } }, '1040' => { 'route_type' => 0, 'stop_distance' => '0', 'stop_id' => 1040, 'stop_landmark' => '', 'stop_latitude' => '-37.9246826', 'stop_longitude' => '145.120529', 'stop_name' => 'Clayton', 'stop_sequence' => 0, 'stop_suburb' => 'Clayton', 'stop_ticket' => { 'is_free_fare_zone' => 'false', 'ticket_checks' => 'false', 'ticket_machine' => 'true', 'ticket_type' => '', 'ticket_zones' => [ 2 ], 'vline_reservation' => 'false', 'zone' => 'Zone 2' } }, '1098' => { 'route_type' => 0, 'stop_distance' => '0', 'stop_id' => 1098, 'stop_landmark' => '', 'stop_latitude' => '-37.89488', 'stop_longitude' => '145.077637', 'stop_name' => 'Hughesdale', 'stop_sequence' => 0, 'stop_suburb' => 'Hughesdale', 'stop_ticket' => { 'is_free_fare_zone' => 'false', 'ticket_checks' => 'false', 'ticket_machine' => 'true', 'ticket_type' => '', 'ticket_zones' => [ 1, 2 ], 'vline_reservation' => 'false', 'zone' => 'Zone 1,Zone 2' } }, '1099' => { 'route_type' => 0, 'stop_distance' => '0', 'stop_id' => 1099, 'stop_landmark' => '', 'stop_latitude' => '-37.91102', 'stop_longitude' => '145.102371', 'stop_name' => 'Huntingdale', 'stop_sequence' => 0, 'stop_suburb' => 'Oakleigh', 'stop_ticket' => { 'is_free_fare_zone' => 'false', 'ticket_checks' => 'false', 'ticket_machine' => 'true', 'ticket_type' => '', 'ticket_zones' => [ 1, 2 ], 'vline_reservation' => 'false', 'zone' => 'Zone 1,Zone 2' } }, '1118' => { 'route_type' => 0, 'stop_distance' => '0', 'stop_id' => 1118, 'stop_landmark' => '', 'stop_latitude' => '-37.86625', 'stop_longitude' => '145.0293', 'stop_name' => 'Malvern', 'stop_sequence' => 0, 'stop_suburb' => 'Malvern', 'stop_ticket' => { 'is_free_fare_zone' => 'false', 'ticket_checks' => 'false', 'ticket_machine' => 'true', 'ticket_type' => '', 'ticket_zones' => [ 1 ], 'vline_reservation' => 'false', 'zone' => 'Zone 1' } }, '1138' => { 'route_type' => 0, 'stop_distance' => '0', 'stop_id' => 1138, 'stop_landmark' => '', 'stop_latitude' => '-37.8901978', 'stop_longitude' => '145.067383', 'stop_name' => 'Murrumbeena', 'stop_sequence' => 0, 'stop_suburb' => 'Murrumbeena', 'stop_ticket' => { 'is_free_fare_zone' => 'false', 'ticket_checks' => 'false', 'ticket_machine' => 'true', 'ticket_type' => '', 'ticket_zones' => [ 1 ], 'vline_reservation' => 'false', 'zone' => 'Zone 1' } }, '1150' => { 'route_type' => 0, 'stop_distance' => '0', 'stop_id' => 1150, 'stop_landmark' => '', 'stop_latitude' => '-37.9003677', 'stop_longitude' => '145.088318', 'stop_name' => 'Oakleigh', 'stop_sequence' => 0, 'stop_suburb' => 'Oakleigh', 'stop_ticket' => { 'is_free_fare_zone' => 'false', 'ticket_checks' => 'false', 'ticket_machine' => 'true', 'ticket_type' => '', 'ticket_zones' => [ 1, 2 ], 'vline_reservation' => 'false', 'zone' => 'Zone 1,Zone 2' } }, '1208' => { 'route_type' => 0, 'stop_distance' => '0', 'stop_id' => 1208, 'stop_landmark' => '', 'stop_latitude' => '-37.93849', 'stop_longitude' => '145.13884', 'stop_name' => 'Westall', 'stop_sequence' => 0, 'stop_suburb' => 'Clayton South', 'stop_ticket' => { 'is_free_fare_zone' => 'false', 'ticket_checks' => 'false', 'ticket_machine' => 'true', 'ticket_type' => '', 'ticket_zones' => [ 2 ], 'vline_reservation' => 'false', 'zone' => 'Zone 2' } }, '1234' => { 'route_type' => 0, 'stop_distance' => '0', 'stop_id' => 1234, 'stop_landmark' => '', 'stop_latitude' => '-37.80805', 'stop_longitude' => '144.96312', 'stop_name' => 'State Library', 'stop_sequence' => 0, 'stop_suburb' => 'Melbourne City', 'stop_ticket' => { 'is_free_fare_zone' => 'false', 'ticket_checks' => 'true', 'ticket_machine' => 'true', 'ticket_type' => '', 'ticket_zones' => [ 1 ], 'vline_reservation' => 'false', 'zone' => 'Zone 1' } }, '1235' => { 'route_type' => 0, 'stop_distance' => '0', 'stop_id' => 1235, 'stop_landmark' => '', 'stop_latitude' => '-37.8160934', 'stop_longitude' => '144.966827', 'stop_name' => 'Town Hall', 'stop_sequence' => 0, 'stop_suburb' => 'Melbourne City', 'stop_ticket' => { 'is_free_fare_zone' => 'false', 'ticket_checks' => 'true', 'ticket_machine' => 'true', 'ticket_type' => '', 'ticket_zones' => [ 1 ], 'vline_reservation' => 'false', 'zone' => 'Zone 1' } }, '1236' => { 'route_type' => 0, 'stop_distance' => '0', 'stop_id' => 1236, 'stop_landmark' => '', 'stop_latitude' => '-37.8333244', 'stop_longitude' => '144.9728', 'stop_name' => 'Anzac', 'stop_sequence' => 0, 'stop_suburb' => 'Melbourne City', 'stop_ticket' => { 'is_free_fare_zone' => 'false', 'ticket_checks' => 'true', 'ticket_machine' => 'true', 'ticket_type' => '', 'ticket_zones' => [ 1 ], 'vline_reservation' => 'false', 'zone' => 'Zone 1' } } } }