1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
#!/usr/bin/perl use CGI::Push qw(:standard); my $min = 1; my $max = 10; while($min <= $max){ do_push(-next_page=>\&status($min,$max)-delay=>1); $min++; } sub status{ my $min = shift; my $max = shift; return start_html('Status'), div({-align=>CENTER}, h1('Virtual Status'), h2($min/$max*100)), end_html(); }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
#!/usr/bin/perl use strict; use warnings; $|=1; # Ausgabepufferung für STDOUT ausschalten use CGI::Push qw(:standard); my $min = 1; my $max = 10; # do_push läuft von allein in einer Schleife! do_push( -next_page=>\&status, # die aufzurufende Routine übernimmt keine Parameter -delay=>1 ); sub randomtestdata { my ($min,$max) = @_; return rand($max-$min); # als Beispiel Zufallsdaten } sub status{ my $data = $min + 1.5 * randomtestdata($min,$max); # hole Daten! # globale Variablen $min und $max müssen hier als # Abbruchbedingung genommen werden anstatt einer äußeren Schleife return undef if $min++ > $max; # Zähle hoch, breche ab, wenn $min zu groß # sonst gib was aus return start_html('Status'), div( {-align=>'CENTER'}, h1('Virtual Status'), h2($data) ), end_html(); }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
open(my $input, '<', 'inputdatei.txt') or die; my @array = <$input>; my $min = 1; my $max = $#array; while(<$input>){ # läuft etwas # ... # ... status($min, $max); $min++; } do_push( -next_page=>\&status, # die aufzurufende Routine übernimmt keine Parameter -delay=>1 ); sub data { my ($min,$max) = @_; return $min/$max; } sub status{ my $first = shift; my $last = shift; my $data = 100 * data($first,$last) .'%'; # hole Daten! return undef if $first > $max; # sonst gib was aus return start_html('Status'), div( {-align=>'CENTER'}, h1('Virtual Status'), h2($data) ), end_html(); }