#!/usr/bin/perl $ps = ""; $minx = 100000000; $miny = 100000000; $maxx = -100000000; $maxy = -100000000; $minx = $miny = -500000; $maxx = $maxy = 500000; while(<>){ if (/^vivaldi [0-9]+ 1 ([0-9]+) (.*)/){ &plotpage; $ticks = $1; $caption = $2; } next if ! /^([0-9]+) at (-?[0-9]+),(-?[0-9]+)(,ht=([0-9]+))?[^ ]* with error ([0-9.]+)/; $x{$1} = $2; $y{$1} = $3; $ht{$1} = $5; if(!$5){ $ht{$1} = 0; } $err{$1} = $6 + 0.0; } &header; print $ps; &trailer; sub header { $minx = $miny if $miny < $minx; $maxx = $maxy if $maxy > $maxx; print < $maxx; $maxy = $y{$k} if $y{$k} > $maxy; } @errs = (); foreach $k (keys %x){ push @errs, $err{$k}; $ps .= "$x{$k} $y{$k} $ht{$k} $err{$k} plot\n"; } @errs = sort {$a <=> $b} @errs; for($i=0; $i<@errs; $i++){ $n = @errs; $ps .= "$i $n $errs[$i] ploterr\n"; } $ps .= "($ticks) ($caption) plotpage\n"; %x = (); %y = (); %ht = (); %err = (); } sub trailer { print <