train: 87844,0,4
Sat Dec 6 04:38:44 2025 2025-12-06T04:38:44Z plat dest scheduled estimated ** current, _* Later today, __ in the future Final stop Stony Point
$perl_scalar = { 'departures' => [ { 'at_platform' => 'false', 'departure_note' => undef, 'departure_sequence' => 1, 'direction_id' => 13, 'disruption_ids' => [], 'estimated_departure_utc' => undef, 'flags' => 'S_WCA-RUN_0', 'platform_number' => '', 'route_id' => 13, 'run_id' => 87844, 'run_ref' => '87844', 'scheduled_departure_utc' => '2025-12-05T20:27:00Z', 'skipped_stops' => [], 'stop_id' => 1073 }, { 'at_platform' => 'false', 'departure_note' => undef, 'departure_sequence' => 2, 'direction_id' => 13, 'disruption_ids' => [], 'estimated_departure_utc' => undef, 'flags' => 'S_WCA-RUN_0', 'platform_number' => '', 'route_id' => 13, 'run_id' => 87844, 'run_ref' => '87844', 'scheduled_departure_utc' => '2025-12-05T20:29:00Z', 'skipped_stops' => [], 'stop_id' => 1114 }, { 'at_platform' => 'false', 'departure_note' => undef, 'departure_sequence' => 3, 'direction_id' => 13, 'disruption_ids' => [], 'estimated_departure_utc' => undef, 'flags' => 'S_WCA-RUN_0', 'platform_number' => '', 'route_id' => 13, 'run_id' => 87844, 'run_ref' => '87844', 'scheduled_departure_utc' => '2025-12-05T20:36:00Z', 'skipped_stops' => [], 'stop_id' => 1015 }, { 'at_platform' => 'false', 'departure_note' => undef, 'departure_sequence' => 4, 'direction_id' => 13, 'disruption_ids' => [], 'estimated_departure_utc' => undef, 'flags' => 'S_WCA-RUN_0', 'platform_number' => '', 'route_id' => 13, 'run_id' => 87844, 'run_ref' => '87844', 'scheduled_departure_utc' => '2025-12-05T20:40:00Z', 'skipped_stops' => [], 'stop_id' => 1178 }, { 'at_platform' => 'false', 'departure_note' => undef, 'departure_sequence' => 5, 'direction_id' => 13, 'disruption_ids' => [], 'estimated_departure_utc' => undef, 'flags' => 'S_WCA-RUN_0', 'platform_number' => '', 'route_id' => 13, 'run_id' => 87844, 'run_ref' => '87844', 'scheduled_departure_utc' => '2025-12-05T20:44:00Z', 'skipped_stops' => [], 'stop_id' => 1197 }, { 'at_platform' => 'false', 'departure_note' => undef, 'departure_sequence' => 6, 'direction_id' => 13, 'disruption_ids' => [], 'estimated_departure_utc' => undef, 'flags' => 'S_WCA-RUN_0', 'platform_number' => '', 'route_id' => 13, 'run_id' => 87844, 'run_ref' => '87844', 'scheduled_departure_utc' => '2025-12-05T20:49:00Z', 'skipped_stops' => [], 'stop_id' => 1088 }, { 'at_platform' => 'false', 'departure_note' => undef, 'departure_sequence' => 7, 'direction_id' => 13, 'disruption_ids' => [], 'estimated_departure_utc' => undef, 'flags' => 'S_WCA-RUN_0', 'platform_number' => '', 'route_id' => 13, 'run_id' => 87844, 'run_ref' => '87844', 'scheduled_departure_utc' => '2025-12-05T20:53:00Z', 'skipped_stops' => [], 'stop_id' => 1022 }, { 'at_platform' => 'false', 'departure_note' => undef, 'departure_sequence' => 8, 'direction_id' => 13, 'disruption_ids' => [], 'estimated_departure_utc' => undef, 'flags' => 'S_WCA-RUN_0', 'platform_number' => '', 'route_id' => 13, 'run_id' => 87844, 'run_ref' => '87844', 'scheduled_departure_utc' => '2025-12-05T20:56:00Z', 'skipped_stops' => [], 'stop_id' => 1136 }, { 'at_platform' => 'false', 'departure_note' => undef, 'departure_sequence' => 9, 'direction_id' => 13, 'disruption_ids' => [], 'estimated_departure_utc' => undef, 'flags' => 'S_WCA-RUN_0', 'platform_number' => '', 'route_id' => 13, 'run_id' => 87844, 'run_ref' => '87844', 'scheduled_departure_utc' => '2025-12-05T20:59:00Z', 'skipped_stops' => [], 'stop_id' => 1046 }, { 'at_platform' => 'false', 'departure_note' => undef, 'departure_sequence' => 10, 'direction_id' => 13, 'disruption_ids' => [], 'estimated_departure_utc' => undef, 'flags' => 'E-S_WCA-RUN_0', 'platform_number' => '', 'route_id' => 13, 'run_id' => 87844, 'run_ref' => '87844', 'scheduled_departure_utc' => '2025-12-05T21:03:00Z', 'skipped_stops' => [], 'stop_id' => 1185 } ], 'directions' => { '13' => { 'direction_id' => 13, 'direction_name' => 'Stony Point', 'route_id' => 13, 'route_type' => 0 } }, 'disruptions' => [], 'routes' => { '13' => { 'geopath' => [], 'route_gtfs_id' => '2-STY', 'route_id' => 13, 'route_name' => 'Stony Point', 'route_number' => '', 'route_type' => 0 } }, 'runs' => { '87844' => { 'destination_name' => 'Stony Point', 'direction_id' => 13, 'express_stop_count' => 0, 'externalService' => undef, 'final_stop_id' => 1185, 'geopath' => [], 'interchange' => undef, 'route_id' => 13, 'route_type' => 0, 'run_id' => 87844, 'run_note' => undef, 'run_ref' => '87844', 'run_sequence' => 0, 'status' => 'scheduled', 'vehicle_descriptor' => undef, 'vehicle_position' => undef } }, 'status' => { 'health' => 1, 'version' => '3.0' }, 'stops' => { '1015' => { 'route_type' => 0, 'stop_distance' => '0', 'stop_id' => 1015, 'stop_landmark' => '', 'stop_latitude' => '-38.194046', 'stop_longitude' => '145.160522', 'stop_name' => 'Baxter', 'stop_sequence' => 0, 'stop_suburb' => 'Baxter', 'stop_ticket' => { 'is_free_fare_zone' => 'false', 'ticket_checks' => 'false', 'ticket_machine' => 'true', 'ticket_type' => '', 'ticket_zones' => [ 2 ], 'vline_reservation' => 'false', 'zone' => 'Zone 2' } }, '1022' => { 'route_type' => 0, 'stop_distance' => '0', 'stop_id' => 1022, 'stop_landmark' => '', 'stop_latitude' => '-38.33739', 'stop_longitude' => '145.178024', 'stop_name' => 'Bittern', 'stop_sequence' => 0, 'stop_suburb' => 'Bittern', 'stop_ticket' => { 'is_free_fare_zone' => 'false', 'ticket_checks' => 'false', 'ticket_machine' => 'true', 'ticket_type' => '', 'ticket_zones' => [ 2 ], 'vline_reservation' => 'false', 'zone' => 'Zone 2' } }, '1046' => { 'route_type' => 0, 'stop_distance' => '0', 'stop_id' => 1046, 'stop_landmark' => '', 'stop_latitude' => '-38.36612', 'stop_longitude' => '145.204041', 'stop_name' => 'Crib Point', 'stop_sequence' => 0, 'stop_suburb' => 'Crib Point', 'stop_ticket' => { 'is_free_fare_zone' => 'false', 'ticket_checks' => 'false', 'ticket_machine' => 'true', 'ticket_type' => '', 'ticket_zones' => [ 2 ], 'vline_reservation' => 'false', 'zone' => 'Zone 2' } }, '1073' => { 'route_type' => 0, 'stop_distance' => '0', 'stop_id' => 1073, 'stop_landmark' => '', 'stop_latitude' => '-38.1429863', 'stop_longitude' => '145.12616', 'stop_name' => 'Frankston', 'stop_sequence' => 0, 'stop_suburb' => 'Frankston', 'stop_ticket' => { 'is_free_fare_zone' => 'false', 'ticket_checks' => 'true', 'ticket_machine' => 'false', 'ticket_type' => '', 'ticket_zones' => [ 2 ], 'vline_reservation' => 'false', 'zone' => 'Zone 2' } }, '1088' => { 'route_type' => 0, 'stop_distance' => '0', 'stop_id' => 1088, 'stop_landmark' => '', 'stop_latitude' => '-38.30566', 'stop_longitude' => '145.185974', 'stop_name' => 'Hastings', 'stop_sequence' => 0, 'stop_suburb' => 'Hastings', 'stop_ticket' => { 'is_free_fare_zone' => 'false', 'ticket_checks' => 'false', 'ticket_machine' => 'true', 'ticket_type' => '', 'ticket_zones' => [ 2 ], 'vline_reservation' => 'false', 'zone' => 'Zone 2' } }, '1114' => { 'route_type' => 0, 'stop_distance' => '0', 'stop_id' => 1114, 'stop_landmark' => '', 'stop_latitude' => '-38.1520348', 'stop_longitude' => '145.139542', 'stop_name' => 'Leawarra', 'stop_sequence' => 0, 'stop_suburb' => 'Frankston', 'stop_ticket' => { 'is_free_fare_zone' => 'false', 'ticket_checks' => 'false', 'ticket_machine' => 'true', 'ticket_type' => '', 'ticket_zones' => [ 2 ], 'vline_reservation' => 'false', 'zone' => 'Zone 2' } }, '1136' => { 'route_type' => 0, 'stop_distance' => '0', 'stop_id' => 1136, 'stop_landmark' => '', 'stop_latitude' => '-38.3540344', 'stop_longitude' => '145.1896', 'stop_name' => 'Morradoo', 'stop_sequence' => 0, 'stop_suburb' => 'Crib Point', 'stop_ticket' => { 'is_free_fare_zone' => 'false', 'ticket_checks' => 'false', 'ticket_machine' => 'true', 'ticket_type' => '', 'ticket_zones' => [ 2 ], 'vline_reservation' => 'false', 'zone' => 'Zone 2' } }, '1178' => { 'route_type' => 0, 'stop_distance' => '0', 'stop_id' => 1178, 'stop_landmark' => '', 'stop_latitude' => '-38.22534', 'stop_longitude' => '145.176239', 'stop_name' => 'Somerville', 'stop_sequence' => 0, 'stop_suburb' => 'Somerville', 'stop_ticket' => { 'is_free_fare_zone' => 'false', 'ticket_checks' => 'false', 'ticket_machine' => 'true', 'ticket_type' => '', 'ticket_zones' => [ 2 ], 'vline_reservation' => 'false', 'zone' => 'Zone 2' } }, '1185' => { 'route_type' => 0, 'stop_distance' => '0', 'stop_id' => 1185, 'stop_landmark' => '', 'stop_latitude' => '-38.3742371', 'stop_longitude' => '145.221848', 'stop_name' => 'Stony Point', 'stop_sequence' => 0, 'stop_suburb' => 'Crib Point', 'stop_ticket' => { 'is_free_fare_zone' => 'false', 'ticket_checks' => 'false', 'ticket_machine' => 'true', 'ticket_type' => '', 'ticket_zones' => [ 2 ], 'vline_reservation' => 'false', 'zone' => 'Zone 2' } }, '1197' => { 'route_type' => 0, 'stop_distance' => '0', 'stop_id' => 1197, 'stop_landmark' => '', 'stop_latitude' => '-38.2598152', 'stop_longitude' => '145.1864', 'stop_name' => 'Tyabb', 'stop_sequence' => 0, 'stop_suburb' => 'Tyabb', 'stop_ticket' => { 'is_free_fare_zone' => 'false', 'ticket_checks' => 'false', 'ticket_machine' => 'true', 'ticket_type' => '', 'ticket_zones' => [ 2 ], 'vline_reservation' => 'false', 'zone' => 'Zone 2' } } } }