#!"D:\webserver\xampp\perl\bin\perl.exe" #! /usr/bin/perl use strict; use warnings; use JSON; # muss evtl. nachinstalliert werden use LWP::UserAgent; # muss evtl. nachinstalliert werden use Data::Dumper; # Wo sind die Daten Haltestellen ID zu holen? #my $url = "http://localhost/abfahrten.do?id=01"; my $url = "http://phoenix/abfahrt.json"; # Wie viele Abfahrten sollen gezeigt werden my $how_many = 3; my @titles = ( 'Zug', 'Zielort', 'Abf. in' ); # Ueberschriften der Ausgabe my @formats = ( '%4s', '%15s', '%8s' ); # Feldbreiten der Ausgabe my $format = join( ' ', @formats ) . "\n"; # baue Format fuer Ausgabe zusammen sub fetch_data { my $url = shift; my $ua = LWP::UserAgent->new( timeout => 10 ); my $response = $ua->get($url); if ( $response->is_success ) { return $response->decoded_content; } else { die $response->status_line; } } # Hauptprogramm # ################################################################### # Daten abholen lasssen my $content = fetch_data( $url ); #my $content = '[["S3","Dresden, Plauen","1"],["S1","Dresden, Flughafen","2"],["RE01","Meissen","10"],["ICE","Hamburg, Neugraben","15"]]'; # Abbruch, wenn Daten nicht geholt werden konnten die "Could not load data from $url." if not defined $content; #print Dumper $content; # Bereite JSON-Parser vor my $json = JSON->new->allow_nonref; # Dekodiere JSON-Daten und erstelle eine Datenstruktur [ [ nr, richtung, minuten ], [ nr, richtung, minuten ] ] my $array_from_json = $json->decode( $content ); # Kontrollausgabe #print Dumper $data; # Sortiere nach Abfahrtszeiten my @sorted = sort { $a->[2] <=> $b->[2] } @$array_from_json; #print Dumper \@sorted; # Zeige die nächsten Abfahrten gemäß $how_many print "Abfahrten\n"; printf $format, @titles; for my $aRef ( @sorted[ 0 .. $how_many-1 ] ) { my ( $zugnr, $ziel, $min ) = @$aRef; $ziel = ( split m/,\s+/, $ziel )[1] if $ziel =~ m/,/; printf $format, $zugnr, $ziel, $min; }