#!/usr/bin/perl foreach $e (qw(M=moveto L=lineto N=newpath C=closepath_clip W=setlinewidth_stroke R=grestore S=gsave I=setgray)) { $_= $e; s/^([A-Z])\=// or die; $letter= $1; y/_/ /; $defs.= "/$letter { $_ } bind def\n"; $func.= "s/\\s$_\\s/\\n$letter\\n/g;\n"; } eval "sub s { $func }; 1;" or die $@; while (<>) { if (m/^\%\!/) { print or die $!; print $defs or die $!; } elsif (m/^\%/) { } else { s/^\s+/\n/; s/$/\n/; s/\s(\d{3,}\.\d{0,3})\d*\s+(\d{3,}\.\d{0,3})\d*\s+(moveto|lineto)\s/ "\n$1 $2 ".uc(substr($3,0,1))."\n" /ge; &s; s/\n+/\n/g; s/^\n//; print or die $! if m/\S/; } }