#!/usr/bin/perl die unless @ARGV==3; ($primer,$ztype,$output) = @ARGV; $output =~ s/^\-o// or die "$output ?"; $gnuplot= "$output.gnuplot.tmp"; $initdata= "$output.initdata.tmp"; open Z, "$ztype" or die "$ztype $!"; open G, ">$gnuplot" or die $!; sub pg ($$) { printf G "%s(u,v) = %s\n", @_ or die $!; } for (;;) { $!=0; defined($_= ) or die "$ztype $!"; s/\r$//; next unless m/^splot\s+([^,]+),([^,]+),([^,]+)\s*$/; pg('x',$1); pg('y',$2); pg('z',$3); last; } printf G "set print \"-\"\n" or die $!; close G or die $!; sub run ($) { print " $_[0]\n"; $!=0; system($_[0]); die "$! $?" if $! or $?; } run("./$primer >>$gnuplot"); run("gnuplot $gnuplot >$initdata"); open I, "$initdata" or die "$initdata $!"; open B, ">$output.new" or die "$output.new $!"; $_= ; m/^(\d+) .*/ or die "$_ ?"; $dim= $1; for ($i=0; $i<$dim; $i++) { $!=0; defined($_= ) or die "$initdata $!"; print B pack "d", $_ or die $!; } close B or die $!; rename "$output.new",$output or die $!; print " wrote $output\n";