#!/usr/bin/perl -s # -d creates a .debug camila file my $filename = shift; open(STDIN, "< $filename.aux") or die "cant find $filename.aux\n" ; 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")if $d; print CAM ' princ("\\\\gdef\\\\@camila{\\\\ifcase\\\\cec\n lixo");'," \n " ; print(":\n")if $d; while(<>){ print(".\n")if $d; 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", ') ; ' , "\n" ; } else {print CAM "$name()=$_;\n"; print CAM 'princ("\\\\or "); princ(', "$name", '()) ; ' , "\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: $_" if $d; last if ($_ eq "__JJ__\n"); print CAL $_; } print "eo jjflush\n" if $d; } sub jjflush2 { my $name = shift; open(AUX,"> $name " ) or die "cant create $name\n"; print CAM 'princ("\n__JJ__\n")', ";\n"; while (){ print "reader2: $_" if $d; last if ($_ eq "__JJ__\n"); print AUX $_; } close AUX; print "eo jjflush2\n" if $d; }