#!/usr/bin/perl -s # -d creates a .debug camila file my $filename = shift; open(STDIN, "< $filename.aux") or die "cant find $filename.aux\n" ; =antigo: if ($d){ open(CAM, "| tee $filename.debug | camilax > $filename.cal") or die "cant create $filename.cal\n" } else { open(CAM, "|camilax > $filename.cal") or die "cant create $filename.cal\n" } =cut use IPC::Open3; # para redireccionar stdin, stdout stderr dum comando open(CAL, "> $filename.cal") or die "cant open $filename.cal\n" ; $pid=open3(CAM, Reader, Error, "camilax -n ") || die "cant camila\n" ; print(":\n"); print CAM ' princ("\\\\gdef\\\\@camila{\\\\ifcase\\\\cec\n lixo \n");'," \n " ; print(":\n"); while(<>){ print(".\n"); if(/\\cam\@prototype{(.*?)}/){ print CAM "nload(\"$1\");\n" ; jjflush();} if(/\\cam\@eval{(.*?)}{(.*)/) { $name = "_f$1"; $corpo = $2; for($corpo){ chop; s/;\s*$//; s/\\par/\n/g; if (/^\s*(\w+)\(([^)]*)\)\s*=/) {print CAM "$_;\n"; print CAM 'princ("\\\\or "); princ(', "'$1", ') ; princ("\n");' , "\n" ; } else {print CAM "$name()=$_;\n"; print CAM 'princ("\\\\or "); princ(', "$name", '()) ; princ("\n");' , "\n" ; } } jjflush(); } if(/\\cam\@input{(.*?)}{(.*)/) { $corpo = $2; $caminput_file = $1; for ($corpo){ chop; s/\\par/\n/g; print CAM $_ ; } jjflush2($caminput_file ); } } print CAM ' princ( "\\\\fi}\n") ;', "\n" ; close CAM ; while (){ print CAL $_; } sub jjflush { print CAM 'princ("\n__JJ__\n")', ";\n"; while (){ print "reader: $_" ; last if ($_ eq "__JJ__\n"); print CAL $_; } print "eo jjflush\n" } sub jjflush2 { my $name = shift; open(AUX,"> $name " ) or die "cant create $name\n"; print CAM 'princ("\n__JJ__\n")', ";\n"; while (){ print "reader2: $_"; last if ($_ eq "__JJ__\n"); print AUX $_; } close AUX; print "eo jjflush2\n" }