home *** CD-ROM | disk | FTP | other *** search
Wrap
#!/bin/sh # This is perlref3_44_0, a shell archive (produced by shar 3.49) # To extract the files from this archive, save it to a file, remove # everything above the "!/bin/sh" line above, and type "sh file_name". # # made 01/18/1991 14:07 UTC by jv@mh.nl # Source directory /usr/users/jv/perlref/Active # # existing files will NOT be overwritten unless -c is specified # # This is part 1 of a multipart archive # do not concatenate these parts, unpack them in order with /bin/sh # # This shar contains: # length mode name # ------ ---------- ------------------------------------------ # 126 -rw-r--r-- Changes # 3569 -r--r--r-- README # 1535 -r--r--r-- Makefile # 2677 -rwxr-xr-x parr # 3029 -rwxr-xr-x psfmt # 89620 -rw-r--r-- refbase.ps # if test -r _shar_seq_.tmp; then echo 'Must unpack archives in sequence!' echo Please unpack part `cat _shar_seq_.tmp` next exit 1 fi # ============= Changes ============== if test -f 'Changes' -a X"$1" != X"-c"; then echo 'x - skipping Changes (File already exists)' rm -f _shar_wnt_.tmp else > _shar_wnt_.tmp echo 'x - extracting Changes (Text)' sed 's/^X//' << 'SHAR_EOF' > 'Changes' && This is a new version, based on Perl 3.0, patchlevel 44 X Note that the card format (3-columns perl page) has been obsoleted. X SHAR_EOF chmod 0644 Changes || echo 'restore of Changes failed' Wc_c="`wc -c < 'Changes'`" test 126 -eq "$Wc_c" || echo 'Changes: original size 126, current size' "$Wc_c" rm -f _shar_wnt_.tmp fi # ============= README ============== if test -f 'README' -a X"$1" != X"-c"; then echo 'x - skipping README (File already exists)' rm -f _shar_wnt_.tmp else > _shar_wnt_.tmp echo 'x - extracting README (Text)' sed 's/^X//' << 'SHAR_EOF' > 'README' && X INTRODUCTION X ============ X X The Perl 3.0 Reference Guide X X Revised: 91/01/18 X The Perl Reference Guide is a typeset quick reference guide to Larry Wall's Perl program. X It contains a concise description of all Perl 3.0 statements, functions, variables and lots of other useful information. The Guide is based on Perl version 3.0, patchlevel 44. X The purpose of the Reference Guide is to aid in the use of Perl, to look up the syntax of specific functions, statements and the meaning of built-in variables. It is *NOT* a self-contained user guide - basic knowledge of the Perl language is required. It is *NOT* complete - some of the more obscure variants of perl constructs have been left out. But all functions and variables are mentioned in at least one way they can be used. X The Reference Guide is designed and created by Johan Vromans. It is distributed in PostScript* format, since its source is maintained in a non-Unix text processing environment, and hence not suitable for other processing. X Special formatting tools, written in Perl, make is possible to reformat the distributed PostScript source for reproduction in a number of formats. If you cannot run these tools, you do not need the information either. X INSTALLATION ============ X After unloading the distribution, you will have the following files: X X README - this file X Changes - a short description of changes X Makefile - make file X psfmt - page formatting tool X parr - page rearrange tool (stolen from J.Greely) X refbase.ps - PostScript version of the Reference Guide X As distributed, the Makefile is configured to generate output for A4 (21 x 29.7 cm) paper format. Use "make PAPER= ..." to select US Letter (8.5 x 11") format. Both formats should be printable on all industry-standard PostScript printers. X Now, you can use "make" to generate a new PostScript file for one of the following formats: X X - Use "make refguide.ps" to create a guide formatted in 8 pages of X 2-column text. It should be printed double-sided, stapled in the X middle, folded, and cut to size to have a 16-page 3.5 x 8" booklet. X X - Use "make 2pass" to create a set of odd and even pages for double X sided printing. First print "guide-odd.ps". Then put the paper back X in the tray, and print either "guide-even1.ps" or "guide-even2.ps", X depending on the way your printer arranges the printed paper. X "make" without arguments will default to refguide.ps . X If your printout is not correct, feel free to change the figures in the formatting program "psfmt". X Comments are welcome, send them to the author. X CREDITS ======= X The Perl Reference Guide is copyrighted by the author. It may be reproduced, printed and distributed freely, as long as the original author gets the credits, and the copyright notice is not removed from the text. It may not be turned into a commercial product except with written permission of the author. X ---------------------------- author info ----------------------------- X Johan Vromans X Multihouse Research, Doesburgweg 7, 2803 PL Gouda, the Netherlands X tel. +31 1820 62911, fax. +31 1820 62500 X email: <jv@mh.nl> ---------------------------------------------------------------------- X I like to thank everyone who has helped me to get the job done, and to get the results to you. Especially Paul O'Neill, Tom Christiansen, Ed Moy (for "macps"), JGreely (for "parr"), Edwin Kremer. And Larry Wall, of course, without whom I would have spent lots of time annoying myself. -- PostScript is a trademark of Adobe, I assume. SHAR_EOF chmod 0444 README || echo 'restore of README failed' Wc_c="`wc -c < 'README'`" test 3569 -eq "$Wc_c" || echo 'README: original size 3569, current size' "$Wc_c" rm -f _shar_wnt_.tmp fi # ============= Makefile ============== if test -f 'Makefile' -a X"$1" != X"-c"; then echo 'x - skipping Makefile (File already exists)' rm -f _shar_wnt_.tmp else > _shar_wnt_.tmp echo 'x - extracting Makefile (Text)' sed 's/^X//' << 'SHAR_EOF' > 'Makefile' && # @(#)@ Makefile 1.13 - Makefile for Perl Reference Guide X SHELL = /bin/sh X # Delete the next line if you use US Letter paper format PAPER = -a4 X AUX = README Makefile parr psfmt X all: refguide.ps X 2pass: guide-odd.ps guide-even1.ps guide-even2.ps X # 2 pages per page, suitable for centrefold reference guide refguide.ps: refbase.ps parr psfmt X parr -o 16,1,2,15,14,3,4,13,12,5,6,11,10,7,8,9 refbase.ps \ X | psfmt $(PAPER) > refguide.ps X # Odd and even passes for centerfold printing. First print # guide-odd.ps, then find out which of the others to use. # guide-even1.ps is for Apple LaserWriter II, guide-even1.ps for old # Apple LaserWriters. guide-odd.ps: refbase.ps parr psfmt X parr -o 16,1,14,3,12,5,10,7 refbase.ps \ X | psfmt $(PAPER) > guide-odd.ps X guide-even1.ps: refbase.ps parr psfmt X parr -o 8,9,6,11,4,13,2,15 refbase.ps \ X | psfmt $(PAPER) > guide-even1.ps X guide-even2.ps: refbase.ps parr psfmt X parr -o 2,15,4,13,6,11,8,9 refbase.ps \ X | psfmt $(PAPER) > guide-even2.ps X clean: X rm -f refguide.ps refcard.ps guide-odd.ps guide-even1.ps guide-even2.ps X # For maintenance use only ... X VER = 4 MINVER = 0 PL = 0 REV = 1 SRC = RefGuide$(VER).$(MINVER).$(PL).$(REV).ps X refbase: $(SRC) X perl pssplit $(SRC) X perl psjoin > refbase.ps X rm -f Page-??.psx X shar: Changes $(AUX) refbase.ps X chmod 755 parr psfmt X rm -f perfref_shr.* X shar -c -n perlref$(VER)_$(PL)_$(REV) -a -s 'jv@mh.nl' \ X -o perlref_shr -L30 -f Changes $(AUX) refbase.ps X ls -l perlref_shr.* X TZ: $(AUX) refbase.ps X pdtar -zcvf perlref.TZ $(AUX) refbase.ps SHAR_EOF chmod 0444 Makefile || echo 'restore of Makefile failed' Wc_c="`wc -c < 'Makefile'`" test 1535 -eq "$Wc_c" || echo 'Makefile: original size 1535, current size' "$Wc_c" rm -f _shar_wnt_.tmp fi # ============= parr ============== if test -f 'parr' -a X"$1" != X"-c"; then echo 'x - skipping parr (File already exists)' rm -f _shar_wnt_.tmp else > _shar_wnt_.tmp echo 'x - extracting parr (Text)' sed 's/^X//' << 'SHAR_EOF' > 'parr' && #!/usr/bin/perl X # @(#)@ parr 1.2 X # rearrange conforming PS code to print the pages in an arbitrary # order. The -[sS] options (for signature order) assume two-up, left # to right. The -o option takes a list of ranges, like this: # 1-5 1-10,11-20 11-,1-10 # usage: parr [-o list] [-s] [-S n] [file] # # jgreely@cis.ohio-state.edu, 89/10/23 X $order=''; $signFlag=''; $signCount=0; $DEBUG=0; $rangePrint=0; $TMPDIR='/usr/tmp'; X while ($_ = $ARGV[0],/^-/) { X shift; X last if /^-\-$/; X /^-o/ && ($order = shift,next); X /^-S/ && ($signCount = shift,$signFlag++,next); X /^-s/ && ($signFlag++,next); X /^-d/ && ($DEBUG++,next); X /^-r/ && ($rangePrint++,next); X die "usage: parr [-d] [-r] [-o list] [-s] [-S n] [file]\n"; } if ($signFlag && $order) { X die "parr: -s and -o cannot be used together\n"; } X $file = "$TMPDIR/p$$.header"; @files = ($file); $sheet=0; open(file,">$file") || X die "$file: $!, stopped"; while (<>) { X # X # hack to use NeXT Preview: strip old '%%Pages:' lines X # X next if /^%%Pages:/; X if (/^%%Page:/) { X close(file); X $sheet++; X $file = "$TMPDIR/p$$.$sheet"; X push(@files,$file); X open(file,">$file") || X die "$file: $!, stopped"; X } X if (/^%%Trailer/) { X close(file); X $file = "$TMPDIR/p$$.trailer"; X push(@files,$file); X open(file,">$file") || X die "$file: $!, stopped"; X } X print file $_; } close(file); X @order = (); if ($order) { X foreach $range (split(/,/,$order)) { X ($start,$sep,$end) = split(/(-)/,$range); X $start = 1 unless $start; X $end = $sheet unless $end; X if ($sep) { X push(@order,$start..$end); X }else{ X push(@order,$start); X } X } }elsif ($signFlag) { X if (! $signCount) { X $signCount = $sheet; X $signCount += (4 - $sheet % 4) if ($sheet % 4); X }else{ X $signCount *=4; X } X for($base=0;$base<$sheet;$base+=$signCount) { X @tmp = ($signCount/2+$base); X push(@tmp,$tmp[0]+1,$tmp[0]+2,$tmp[0]-1); X while ($tmp[3] > $base) { X push(@order,@tmp); X @tmp = ($tmp[0]-2,$tmp[1]+2,$tmp[2]+2,$tmp[3]-2); X } X } }else{ X @order = (1..$sheet); } X @tmp=@order; @order=(); foreach $page (@tmp) { X push(@order,$page > $sheet ? "B" : $page); } X if ($rangePrint) { X print join(',',@order),"\n"; X unlink @files unless $DEBUG; X exit(0); } X open(file,"$TMPDIR/p$$.header"); $_ = <file>; print $_,"%%Pages: (atend)\n"; print while <file>; close(file); X foreach $page (@order) { X $count++; X print "%%Page: ? $count\n%%OldPage: $page\n"; X if ($page eq "B") { X print "showpage\n"; X }else{ X open(file,"$TMPDIR/p$$.$page"); X while (<file>) { X print unless /^%%Page:/; X } X close(file); X } } open(file,"$TMPDIR/p$$.trailer"); print while <file>; close(file); print "%%Pages: $count\n"; X unlink @files unless $DEBUG; exit(0); SHAR_EOF chmod 0755 parr || echo 'restore of parr failed' Wc_c="`wc -c < 'parr'`" test 2677 -eq "$Wc_c" || echo 'parr: original size 2677, current size' "$Wc_c" rm -f _shar_wnt_.tmp fi # ============= psfmt ============== if test -f 'psfmt' -a X"$1" != X"-c"; then echo 'x - skipping psfmt (File already exists)' rm -f _shar_wnt_.tmp else > _shar_wnt_.tmp echo 'x - extracting psfmt (Text)' sed 's/^X//' << 'SHAR_EOF' > 'psfmt' && #!/usr/bin/perl -s # # @(#)@ psfmt 1.2 - Format perl reference guide # # Usage: parr -o ..... Pages.ps | psfmt [-a4] [-card] | lpr # # May be useful to format other Macintosh/MS-Word generated output also. # # Based on a program by jgreely@cis.ohio-state.edu, 89/10/23 # X ################ [ -s params ] ################ # # -a4: Use a4 format paper size (21 x 29.7 cm) $a4 = 0 unless defined $a4; # # -card: 3 columns per page # $modulus = 2 + defined $card; X ################ start of configuration section ################ X $scale = 0.667; # Output is prepared at 667% $xoffset = 0; $yoffset = -1; X # Displacements (in inches): X $xdisp = $a4 ? 8 : 8; X if ( $modulus == 2 ) { X if ( $a4 ) { X @ydisp = (1.33, 5.74); X } X else { X # courtesy Tom Christiansen <convex!tchrist@uunet.UU.NET> X @ydisp = (1.5625, 6.0625); X } } else { X if ( $a4 ) { X @ydisp = (0, 3.67, 7.33); X } X else { X # courtesy Tom Christiansen <convex!tchrist@uunet.UU.NET> X @ydisp = (0.18750, 3.8125, 7.4375); X } } ################ end of configuration section ################ X $prolog = ""; for $i (1..$modulus) { X $prolog .= "/move$i { " X . int(($xoffset+$xdisp)*72/$scale) X . " " X . int(($yoffset+$ydisp[$i-1])*72/$scale) X . " " X . "translate 90 rotate" X . " } def\n"; } X $_ = <>; if (/^%!PS-Adobe/) { X print "%!PS-Adobe-2.0\n%%Pages: (atend)\n"; } else { X die "Not conforming PostScript (no %!PS-Adobe), stopped"; } X # read comment section (up to first non-%% line, or %%EndComments) # while (<>) { X next if /^%%Pages:/; X if (!/^%%/) { X do print_prologue(); X print; X last; X } X if (/^%%EndComments/) { X print; X do print_prologue(); X last; X } X print; } X while (<>) { X next if /^%%Pages:/; X next if /^op$/; X next if /^F T cp$/; X X if (/^%%Page:/) { X do enter_page(); X next; X } X if (/^%%Trailer/) { X do print_trailer(); X next; X } X print; } # print actual page count. This must be the last trailer comment # printed. # print "%%Pages: $sheet\n"; exit(0); X # the prolog consists of simple command definitions you want to make # available to the configuration routines. None of them do anything # complicated, but why make life more difficult for the user? # sub print_prologue { X print $prolog; } X # basically, at the beginning of a page, pull the number from the page # header, take it modulo $modulus, and print things based on that # # number. If it's 1, end the previous sheet (if there is one), # increment the sheet number, and print a sheet header. For all # pages, print the appropriate page motion command. # sub enter_page { X $page++; X ($foo,$bar,$oldpage) = split; X die "Help! page number mismatch, stopped" if ($oldpage != $page); X $temp = $page % $modulus; X if ($temp == 1) { X if ($sheet++) { X print "F T cp\n"; X } X print "%%Page: ? $sheet\n"; X } X else { X print "pm restore\n" if $sheet; X $temp = $modulus if $temp == 0; X } X print "op\nmove$temp\n"; } X sub print_trailer { X print "F T cp\n" if $page; X print "%%Trailer\n"; } X SHAR_EOF chmod 0755 psfmt || echo 'restore of psfmt failed' Wc_c="`wc -c < 'psfmt'`" test 3029 -eq "$Wc_c" || echo 'psfmt: original size 3029, current size' "$Wc_c" rm -f _shar_wnt_.tmp fi # ============= refbase.ps ============== if test -f 'refbase.ps' -a X"$1" != X"-c"; then echo 'x - skipping refbase.ps (File already exists)' rm -f _shar_wnt_.tmp else > _shar_wnt_.tmp echo 'x - extracting refbase.ps (Text)' sed 's/^X//' << 'SHAR_EOF' > 'refbase.ps' && %!PS-Adobe-2.0 %%Title: PerlRef 3.044 %%Creator: MS-Word 4.0 NL %%CreationDate: Thursday, January 17, 1991 %%Pages: (atend) %%BoundingBox: ? ? ? ? %%PageBoundingBox: 28 29 565 812 %%For: Johan Vromans %%BeginProcSet %%EndComments /sc {60 45 {abs exch abs 2 copy add 1 gt{1.0 sub dup mul exch 1.0 sub dup mul add 1.0 sub}{dup mul exch dup mul add 1.0 exch sub} ifelse}setscreen} bind def statusdict begin product(LaserWriter II)anchorsearch end {pop pop/letter [/letter load /exec load /sc load /exec load]cvx def/legal [/legal load /exec load /sc load /exec load]cvx def/a4 [/a4 load /exec load /sc load /exec load]cvx def/b5 [/b5 load /exec load /sc load /exec load]cvx def /lettersmall [/lettersmall load /exec load /sc load /exec load]cvx def/a4small [/a4small load /exec load /sc load /exec load]cvx def/note [/note load /exec load /sc load /exec load]cvx def}{pop}ifelse systemdict/currentpacking known{currentpacking true setpacking}if /LW{save statusdict/product get(LaserWriter)anchorsearch exch pop{length 0 eq{1}{2}ifelse}{0}ifelse exch restore}bind def /LW+{LW 2 eq}bind def /ok{systemdict/statusdict known dup{LW 0 gt and}if}bind def /md 250 dict def md begin /av 0 def /T true def/F false def/mtx matrix def/s75 75 string def/s8 8 string def/s1 ( ) def/pxs 1 def/pys 1 def 1 0 mtx defaultmatrix dtransform exch atan/pa exch def/nlw .24 def/ppr [-32 -29.52 762 582.48] def /pgs 1 def/por true def/xb 500 array def/so true def/tso true def/fillflag false def/pnm 1 def/fmv true def /sfl false def/ma 0 def/invertflag false def/dbinvertflag false def/xflip false def/yflip false def/noflips true def/scaleby96 false def/fNote true def/fBitStretch true def /fg (Rvd\001\001\000\000\177) def /bdf{bind def}bind def /xdf{exch def}bdf /xl{neg exch neg translate}bdf /fp{pnsh 0 ne pnsv 0 ne and}bdf /nop{}bdf/lnop[/nop load]cvx bdf /vrb[ {fp{fg 6 get 0 ne{gsave stroke grestore}{gsave 1 setlinewidth pnsh pnsv scale stroke grestore}ifelse}if newpath}bind /eofill load dup /newpath load 2 index dup {clip newpath}bind {}bind dup 2 copy ]def currentscreen/spf xdf/rot xdf/freq xdf /doop{vrb exch get exec}bdf /psu{/tso xdf /fNote xdf/fBitStretch xdf/scaleby96 xdf/yflip xdf/xflip xdf /invertflag xdf/dbinvertflag invertflag statusdict begin version cvr 47.0 ge product (LaserWriter) eq not and end invertflag and {not}if def xflip yflip or{/noflips false def}if /pgs xdf 2 index .72 mul exch div/pys xdf div .72 mul/pxs xdf ppr astore pop/por xdf sn and/so xdf}bdf /tab{statusdict /11x17 known{statusdict begin /11x17 load end}{statusdict /setpage known{statusdict begin 792 1224 1 setpage end}{statusdict /setpageparams known{statusdict begin 792 1224 0 1 setpageparams end}if}ifelse}ifelse}bdf /txpose{fNote{smalls}{bigs}ifelse pgs get exec pxs pys scale ppr aload pop por{noflips{pop exch neg exch translate pop 1 -1 scale}if xflip yflip and{pop exch neg exch translate 180 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg translate}if xflip yflip not and{pop exch neg exch translate pop 180 rotate ppr 3 get ppr 1 get neg sub neg 0 translate}if yflip xflip not and{ppr 1 get neg ppr 0 get neg translate}if} {noflips{translate pop pop 270 rotate 1 -1 scale}if xflip yflip and{translate pop pop 90 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg translate}if xflip yflip not and{translate pop pop 90 rotate ppr 3 get ppr 1 get neg sub neg 0 translate}if yflip xflip not and{translate pop pop 270 rotate ppr 2 get ppr 0 get neg sub neg 0 exch translate}if}ifelse scaleby96{ppr aload pop 4 -1 roll add 2 div 3 1 roll add 2 div 2 copy translate .96 dup scale neg exch neg exch translate}if}bdf /fr{4 copy ppr aload pop 3 -1 roll add 3 1 roll exch add 6 2 roll 3 -1 roll sub 3 1 roll exch sub 3 -1 roll exch div 3 1 roll div exch scale pop pop xl}bdf /obl{{0.212557 mul}{pop 0}ifelse}bdf /sfd{ps fg 5 -1 roll get mul 100 div 0 ps 5 -1 roll obl ps neg 0 0 6a astore makefont setfont}bdf /fnt{findfont sfd}bdf /bt{sa 3 1 roll 3 index and put}bdf /sa(\000\000\000\000\000\000\000\000\000\000)def /fs{0 1 bt 1 2 bt 2 4 bt 3 8 bt 4 16 bt 5 32 bt 6 64 bt 7 128 bt sa exch 8 exch put}bdf /mx1 matrix def /mx2 matrix def /mx3 matrix def /bu{currentpoint currentgray currentlinewidth currentlinecap currentlinejoin currentdash exch aload length fg 5 sfl{1}{0}ifelse put pnsv pnsh 2t aload pop 3a aload pop mx2 aload pop mx1 aload pop mtx currentmatrix aload pop mx3 aload pop ps pm restore/ps xdf mx3 astore pop}bdf /bn{/pm save def mx3 setmatrix newpath 0 0 moveto ct dup 39 get 0 exch getinterval cvx exec mtx astore setmatrix mx1 astore pop mx2 astore pop 3a astore pop 2t astore pop/pnsh xdf/pnsv xdf gw /sfl fg 5 get 0 ne def array astore exch setdash setlinejoin setlinecap setlinewidth setgray moveto}bdf /fc{save vmstatus exch sub 50000 lt {(%%[|0|]%%)=print flush}if pop restore}bdf /tc{32768 div add 3 1 roll 32768 div add 2t astore pop}bdf /3a [0 0 0] def /2t 2 array def /tp{3a astore pop}bdf /tt{mx2 currentmatrix pop currentpoint 2 copy 2t aload pop qa 2 copy translate 3a aload pop exch dup 0 eq {pop}{1 eq{-1 1}{1 -1}ifelse scale}ifelse rotate pop neg exch neg exch translate moveto}bdf /te{mx2 setmatrix}bdf /th{3 -1 roll div 3 1 roll exch div 2 copy mx1 scale pop scale/sfl true def}bdf /tu{1 1 mx1 itransform scale/sfl false def}bdf /ts{1 1 mx1 transform scale/sfl true def}bdf /fz{/ps xdf}bdf /dv{dup 0 ne{div}{pop}ifelse}bdf /pop4{pop pop pop pop}bdf /it{sfl{mx1 itransform}if}bdf /gm{exch it moveto}bdf/rm{it rmoveto}bdf /lm{currentpoint sfl{mx1 transform}if exch pop sub 0 exch it rmoveto}bdf /fm{statusdict/manualfeed known}bdf /se{statusdict exch/manualfeed exch put}bdf /mf{dup/ma exch def 0 gt{fm se/t1 5 st ok ma 1 gt and{/t2 0 st/t3 0 st statusdict/manualfeedtimeout 3600 put }if}if}bdf /jn{/statusdict where exch pop{statusdict exch /jobname exch put}if}bdf /pen{pnm mul/pnsh xdf pnm mul/pnsv xdf pnsh setlinewidth}bdf /min{2 copy gt{exch}if pop}bdf /max{2 copy lt{exch}if pop}bdf /dh{fg 6 1 put array astore dup {1 pxs div mul exch}forall astore exch pop exch pop exch setdash}bdf /ih[currentdash]def /rh{fg 6 0 put ih aload pop setdash}bdf /dl{gsave nlw pys div setlinewidth 0 setgray}bdf /dlin{exch currentpoint currentlinewidth 2 div dup translate newpath moveto lineto currentpoint stroke grestore moveto}bdf /lin{fg 6 get 0 ne{exch lineto currentpoint 0 doop moveto} {exch currentpoint/pnlv xdf/pnlh xdf gsave newpath/@1 xdf/@2 xdf fp{pnlh @2 lt{pnlv @1 ge {pnlh pnlv moveto @2 @1 lineto pnsh 0 rlineto 0 pnsv rlineto pnlh pnsh add pnlv pnsv add lineto pnsh neg 0 rlineto} {pnlh pnlv moveto pnsh 0 rlineto @2 pnsh add @1 lineto 0 pnsv rlineto pnsh neg 0 rlineto pnlh pnlv pnsv add lineto}ifelse}{pnlv @1 gt {@2 @1 moveto pnsh 0 rlineto pnlh pnsh add pnlv lineto 0 pnsv rlineto pnsh neg 0 rlineto @2 @1 pnsv add lineto}{pnlh pnlv moveto pnsh 0 rlineto 0 pnsv rlineto @2 pnsh add @1 pnsv add lineto pnsh neg 0 rlineto 0 pnsv neg rlineto}ifelse}ifelse closepath fill}if @2 @1 grestore moveto}ifelse}bdf /gw{/pnm fg 3 get fg 4 get div def}bdf /lw{fg exch 4 exch put fg exch 3 exch put gw pnsv pnsh pen}bdf /barc{/@1 xdf/@2 xdf/@3 xdf/@4 xdf/@5 xdf /@6 xdf/@7 xdf/@8 xdf gsave @5 @7 add 2 div @6 @8 add 2 div translate newpath 0 0 moveto @5 @7 sub @6 @8 sub mtx currentmatrix pop scale @1{newpath}if 0 0 0.5 @4 @3 arc @4 @3 sub abs 360 ge{closepath}if mtx setmatrix @2 doop grestore}bdf /ar{dup 0 eq barc}bdf /ov{0 exch 360 exch true barc}bdf /rc{/@t xdf currentpoint 6 2 roll newpath 4 copy 4 2 roll exch moveto 6 -1 roll lineto lineto lineto closepath @t doop moveto}bdf /mup{dup pnsh 2 div le exch pnsv 2 div le or}bdf /rr{/@1 xdf 2. div/@2 xdf 2. div/@3 xdf /@4 xdf/@5 xdf/@6 xdf/@7 xdf @7 @5 eq @6 @4 eq @2 mup or or{@7 @6 @5 @4 @1 rc} {@4 @6 sub 2. div dup @2 lt{/@2 xdf}{pop}ifelse @5 @7 sub 2. div dup @2 lt{/@2 xdf}{pop}ifelse @1 0 eq{/@2 @2 pnsh 2 div 2 copy gt{sub def}{0 pop4}ifelse}if currentpoint newpath @4 @6 add 2. div @7 moveto @4 @7 @4 @5 @2 arcto pop4 @4 @5 @6 @5 @2 arcto pop4 @6 @5 @6 @7 @2 arcto pop4 @6 @7 @4 @7 @2 arcto pop4 closepath @1 doop moveto}ifelse}bdf /pr{gsave newpath/pl{exch moveto/pl{exch lineto}def}def}bdf /pl{exch lineto}bdf /ep{dup 0 eq{{moveto}{exch lin}{}{(%%[|1|]%%)= flush}pathforall pop grestore}{doop grestore}ifelse currentpoint newpath moveto}bdf /gr{64. div setgray}bdf /pat{s8 copy pop 9.375 pa por not{90 add}if{1 add 4 mul cvi s8 exch get exch 1 add 4 mul cvi 7 sub bitshift 1 and}setscreen gr}bdf /sg{freq rot/spf load setscreen gr}bdf /dc{transform round .5 sub exch round .5 sub exch itransform}bdf /sn{userdict/smooth4 known}bdf /x8{3 bitshift}bdf /x4{2 bitshift}bdf /d4{-2 bitshift}bdf /d8{-3 bitshift}bdf /rb{15 add -4 bitshift 1 bitshift}bdf /db{/@7 save def/@1 xdf/@2 xdf/@3 xdf/@4 xdf/@5 xdf/@6 @5 @3 4 add mul def dc translate scale/xdbit 1 1 idtransform abs/ydbit exch def abs def{0 0 1 ydbit add 1 10 rc clip}if @1 0 eq @1 4 eq or{1 setgray ydbit 0 1 ydbit add 1 2 rc}if @1 3 eq @1 7 eq or{1}{0}ifelse setgray/@9 @1 0 eq @1 1 eq @1 3 eq or or dbinvertflag xor def/@13 @6 def @2 fBitStretch or{/@10 @4 x4 def/@11 @3 x4 def/@12 @10 rb def/@13 @12 @11 mul def/@15 1 1 dtransform abs/calcY 1 index def round cvi/@14 exch def abs/calcX 1 index def round cvi scaleby96 not{1 add}if def/@16 @15 rb def/@17 @16 @14 mul def}if sn @13 60000 lt and @2 fBitStretch or and{mtx currentmatrix dup 1 get exch 2 get 0. eq exch 0. eq and @17 60000 lt and fBitStretch and{@16 3 bitshift @14 @9 [calcX 0 0 calcY 0 0]{@17 string @13 string currentfile @6 string readhexstring pop 1 index @4 @3 @5 @12 @2 smooth4 @10 @11 @12 dup string 5 index @15 @14 @16 dup string stretch}imagemask}{@12 x8 @11 @9 [@10 0 0 @11 0 0]{@13 string currentfile @6 string readhexstring pop 1 index @4 @3 @5 @12 @2 smooth4}imagemask}ifelse}{@5 3 bitshift @3 4 add @9 [@4 0 0 @3 0 2]{currentfile @6 string readhexstring pop}imagemask}ifelse @7 restore}bdf /multibit{/mbdeep exch def/mbY exch def/mbX exch def save mbX mbY mbdeep[mbX 0 0 mbY 0 0]{currentfile picstr readhexstring pop}image restore}bdf /wd 16 dict def /mfont 14 dict def /mdf{mfont wcheck not{/mfont 14 dict def}if mfont begin xdf end}bdf /cf{{1 index/FID ne{def}{pop pop}ifelse}forall}bdf/rf{/@1 exch def/@2 exch def FontDirectory @2 known{cleartomark pop}{findfont dup begin dup length @1 add dict begin cf{/Encoding macvec def}{Encoding dup length array copy/Encoding exch def counttomark 2 idiv{Encoding 3 1 roll put}repeat}ifelse pop exec currentdict end end @2 exch definefont pop}ifelse}bdf /bmbc{exch begin wd begin /cr xdf save CharTable cr 6 mul 6 getinterval{}forall /bitheight xdf/bitwidth xdf .96 div/width xdf Gkernmax add/XOffset xdf Gdescent add/YOffset xdf/rowbytes xdf rowbytes 255 eq{0 0 0 0 0 0 setcachedevice} {Gnormsize dup scale width 0 XOffset YOffset bitwidth XOffset add bitheight YOffset add setcachedevice rowbytes 0 ne{ XXOffset YOffset translate newpath 0 0 moveto bitwidth bitheight scale sn{ /xSmt bitwidth x4 def /ySmt bitheight x4 def /rSmt xSmt rb def rSmt x8 ySmt true [xSmt 0 0 ySmt neg 0 ySmt] {rSmt ySmt mul string CharData cr get 1 index bitwidth bitheight rowbytes rSmt tso smooth4} }{rowbytes 3 bitshift bitheight 4 add true [bitwidth 0 0 bitheight neg 0 bitheight 2 add] {CharData cr get} }ifelse imagemask }if }ifelse restore end end }bdf /bb{.96 exch div/Gnormsize mdf 2 index /Gkernmax mdf 1 index/Gdescent mdf 3 index div 4 1 roll 2 index div 1. 5 2 roll exch div 4 1 roll 4 array astore/FontBBox mdf }bdf /cdf{mfont/CharData get 3 1 roll put}bdf /bf{ mfont begin /FontType 3 def /FontMatrix [1 0 0 1 0 0] def /Encoding macvec def /BuildChar/bmbc load def end mfont definefont pop }bdf /wi LW 1 eq{{gsave 0 0 0 0 0 0 0 0 moveto lineto lineto lineto closepath clip stringwidth grestore}bind}{/stringwidth load}ifelse def /aps{0 get 124 eq}bdf /xc{s75 cvs dup}bdf /xp{put cvn}bdf /scs{xc 3 67 put dup 0 95 xp}bdf /sos{xc 3 79 xp}bdf /sbs{xc 1 66 xp}bdf /sis{xc 2 73 xp}bdf /sob{xc 2 79 xp}bdf /sss{xc 4 83 xp}bdf /dd{exch 1 index add 3 1 roll add exch}bdf /smc{moveto dup show}bdf /kwn{FontDirectory 1 index known{findfont exch pop}}bdf /gl{1 currentgray sub setgray}bdf /mm{/mfont 10 dict def mfont begin /FontMatrix [1 0 0 1 0 0] def /FontType 3 def /Encoding macvec def /df 4 index findfont def /FontBBox [0 0 1 1] def /xda xdf/mbc xdf /BuildChar{wd begin/cr xdf/fd xdf/cs s1 dup 0 cr put def fd/mbc get exec end}def exec end mfont definefont}bdf /ac{dup scs kwn{exch findfont dup length 1 add dict begin{1 index/FID ne 2 index/UniqueID ne and{def}{pop pop}ifelse}forall fmv{/Encoding macvec def}if/StrokeWidth nlw 1000 mul pys div ps div dup 12 lt{pop 12}if def /PaintType 2 def currentdict end definefont}ifelse}bdf /mb{dup sbs kwn{exch{pop}{bbc}{}mm}ifelse sfd}bdf /mo{dup sos kwn{exch{pop}{boc}{}mm}ifelse sfd}bdf /ms{dup sss kwn{exch{pop}{bsc}{}mm}ifelse sfd}bdf /ou{dup sos kwn{exch dup ac pop{scs findfont /df2 xdf}{aoc}{}mm}ifelse sfd}bdf /su{dup sss kwn{exch dup ac pop{scs findfont /df2 xdf}{asc}{}mm}ifelse sfd}bdf /ao{/fmv true def ou}bdf/as{/fmv true def su}bdf /vo{/fmv false def ou}bdf/vs{/fmv false def su}bdf /bbc{/da .03 def fd/df get setfont gsave cs wi 1 index 0 ne{exch da add exch}if grestore setcharwidth cs 0 0 smc da 0 smc da da smc 0 da moveto show}bdf /boc{/da 1 ps div def fd/df get setfont gsave cs wi 1 index 0 ne{exch da add exch}if grestore setcharwidth cs 0 0 smc da 0 smc da da smc 0 da smc gl da 2. div dup moveto show}bdf /bsc{/da 1 ps div def /ds .05 def/da2 da 2. div def fd/df get setfont gsave cs wi 1 index 0 ne{exch ds add da2 add exch}if grestore setcharwidth cs ds da2 add .01 add 0 smc 0 ds da2 sub translate 0 0 smc da 0 smc da da smc 0 da smc gl da 2. div dup moveto show}bdf /aoc{fd/df get setfont gsave cs wi grestore setcharwidth gl cs 0 0 smc fd/df2 get setfont gl 0 0 moveto show}bdf /asc{/da .05 def fd/df get setfont gsave cs wi 1 index 0 ne{exch da add exch}if grestore setcharwidth cs da .01 add 0 smc 0 da translate gl 0 0 smc gl fd/df2 get setfont 0 0 moveto show}bdf /st{1000 mul usertime add dup 2147483647 gt{2147483647 sub}if def}bdf /the{usertime sub dup 0 lt exch -2147483648 gt and}bdf /6a 6 array def /2a 2 array def /3q 3 array def /qs{3 -1 roll sub exch 3 -1 roll sub exch}bdf /qa{3 -1 roll add exch 3 -1 roll add exch}bdf /qm{3 -1 roll 1 index mul 3 1 roll mul}bdf /qn{6a exch get mul}bdf /qA .166667 def/qB .833333 def/qC .5 def /qx{6a astore pop qA 0 qn qB 2 qn add qA 1 qn qB 3 qn add qB 2 qn qA 4 qn add qB 3 qn qA 5 qn add qC 2 qn qC 4 qn add qC 3 qn qC 5 qn add}bdf /qp{6 copy 12 -2 roll pop pop}bdf /qc{exch qp qx curveto}bdf /qi{{exch 4 copy 2a astore aload pop qa .5 qm newpath moveto}{exch 2 copy 6 -2 roll 2 qm qs 4 2 roll}ifelse}bdf /qq{{qc 2a aload pop qx curveto}{exch 4 copy qs qa qx curveto}ifelse}bdf /pt{currentpoint newpath moveto}bdf /qf{/fillflag true def}bdf /ec{1 and 0 ne{0 doop}if grestore currentpoint newpath moveto/fillflag false def}bdf /eu{currentpoint fp{0 ep}{grestore newpath}ifelse moveto/fillflag false def}bdf /bp{currentpoint newpath 2 copy moveto}bdf /ef{gsave fillflag{gsave eofill grestore}if}bdf /sm{0 exch{@1 eq{1 add}if}forall}bdf /lshow{4 1 roll exch/@1 exch def{1 index wi pop sub 1 index sm dv 0 @1 4 -1 roll widthshow}{1 index wi pop sub 1 index dup sm 10 mul exch length 1 sub add dv dup 10. mul 0 @1 4 -1 roll 0 6 -1 roll awidthshow}ifelse}bdf SHAR_EOF true || echo 'restore of refbase.ps failed' fi echo 'End of perlref3_44_0 part 1' echo 'File refbase.ps is continued in part 2' echo 2 > _shar_seq_.tmp exit 0 -- Johan Vromans jv@mh.nl via internet backbones Multihouse Automatisering bv uucp: ..!{uunet,hp4nl}!mh.nl!jv Doesburgweg 7, 2803 PL Gouda, The Netherlands phone/fax: +31 1820 62911/62500 ------------------------ "Arms are made for hugging" -------------------------