Perl Reference Guide 3.044 - Part 1 of 4

Johan Vromans jv at mh.nl
Sat Jan 19 01:26:14 AEST 1991


This is revision 3.044 of the Perl Reference Guide construction kit.
It is a complete new kit, since lots of things have changed to cope
with the new features since 3.028.

Maybe version 4.0 will be only a number change ... but who knows?

Happy hacking!

	Johan

---- Cut Here and feed the following to sh ----
#!/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 at 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 at 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 at 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 at 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, at 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(',', at 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 at 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 at 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 at 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 at 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" -------------------------



More information about the Alt.sources mailing list