home *** CD-ROM | disk | FTP | other *** search
/ Garbo / Garbo.cdr / pc / doc_soft / perlref.lzh / perlref.1 next >
Encoding:
Text File  |  1991-01-26  |  29.7 KB  |  870 lines

  1.  
  2. #!/bin/sh
  3. # This is perlref3_44_0, a shell archive (produced by shar 3.49)
  4. # To extract the files from this archive, save it to a file, remove
  5. # everything above the "!/bin/sh" line above, and type "sh file_name".
  6. #
  7. # made 01/18/1991 14:07 UTC by jv@mh.nl
  8. # Source directory /usr/users/jv/perlref/Active
  9. #
  10. # existing files will NOT be overwritten unless -c is specified
  11. #
  12. # This is part 1 of a multipart archive                                    
  13. # do not concatenate these parts, unpack them in order with /bin/sh        
  14. #
  15. # This shar contains:
  16. # length  mode       name
  17. # ------ ---------- ------------------------------------------
  18. #    126 -rw-r--r-- Changes
  19. #   3569 -r--r--r-- README
  20. #   1535 -r--r--r-- Makefile
  21. #   2677 -rwxr-xr-x parr
  22. #   3029 -rwxr-xr-x psfmt
  23. #  89620 -rw-r--r-- refbase.ps
  24. #
  25. if test -r _shar_seq_.tmp; then
  26.     echo 'Must unpack archives in sequence!'
  27.     echo Please unpack part `cat _shar_seq_.tmp` next
  28.     exit 1
  29. fi
  30. # ============= Changes ==============
  31. if test -f 'Changes' -a X"$1" != X"-c"; then
  32.     echo 'x - skipping Changes (File already exists)'
  33.     rm -f _shar_wnt_.tmp
  34. else
  35. > _shar_wnt_.tmp
  36. echo 'x - extracting Changes (Text)'
  37. sed 's/^X//' << 'SHAR_EOF' > 'Changes' &&
  38. This is a new version, based on Perl 3.0, patchlevel 44
  39. X
  40. Note that the card format (3-columns perl page) has been obsoleted.
  41. X
  42. SHAR_EOF
  43. chmod 0644 Changes ||
  44. echo 'restore of Changes failed'
  45. Wc_c="`wc -c < 'Changes'`"
  46. test 126 -eq "$Wc_c" ||
  47.     echo 'Changes: original size 126, current size' "$Wc_c"
  48. rm -f _shar_wnt_.tmp
  49. fi
  50. # ============= README ==============
  51. if test -f 'README' -a X"$1" != X"-c"; then
  52.     echo 'x - skipping README (File already exists)'
  53.     rm -f _shar_wnt_.tmp
  54. else
  55. > _shar_wnt_.tmp
  56. echo 'x - extracting README (Text)'
  57. sed 's/^X//' << 'SHAR_EOF' > 'README' &&
  58. X                 INTRODUCTION
  59. X                 ============
  60. X
  61. X             The Perl 3.0 Reference Guide
  62. X
  63. X            Revised: 91/01/18
  64. X
  65. The Perl Reference Guide is a typeset quick reference guide to
  66. Larry Wall's Perl program.
  67. X
  68. It contains a concise description of all Perl 3.0 statements,
  69. functions, variables and lots of other useful information. 
  70. The Guide is based on Perl version 3.0, patchlevel 44.
  71. X
  72. The purpose of the Reference Guide is to aid in the use of Perl, to
  73. look up the syntax of specific functions, statements and the meaning
  74. of built-in variables.  It is *NOT* a self-contained user guide -
  75. basic knowledge of the Perl language is required. It is *NOT* complete
  76. - some of the more obscure variants of perl constructs have been left
  77. out.  But all functions and variables are mentioned in at least one
  78. way they can be used.
  79. X
  80. The Reference Guide is designed and created by Johan Vromans. It is
  81. distributed in PostScript* format, since its source is maintained in a
  82. non-Unix text processing environment, and hence not suitable for other
  83. processing.
  84. X
  85. Special formatting tools, written in Perl, make is possible to
  86. reformat the distributed PostScript source for reproduction in a
  87. number of formats.
  88. If you cannot run these tools, you do not need the information either.
  89. X
  90. INSTALLATION
  91. ============
  92. X
  93. After unloading the distribution, you will have the following files:
  94. X
  95. X    README       - this file
  96. X    Changes    - a short description of changes
  97. X    Makefile   - make file
  98. X    psfmt       - page formatting tool
  99. X    parr       - page rearrange tool (stolen from J.Greely)
  100. X    refbase.ps - PostScript version of the Reference Guide
  101. X
  102. As distributed, the Makefile is configured to generate output for A4
  103. (21 x 29.7 cm) paper format. Use "make PAPER= ..." to select US Letter
  104. (8.5 x 11") format.  Both formats should be printable on all
  105. industry-standard PostScript printers.
  106. X
  107. Now, you can use "make" to generate a new PostScript file for one of 
  108. the following formats:
  109. X
  110. X - Use "make refguide.ps" to create a guide formatted in 8 pages of
  111. X   2-column text. It should be printed double-sided, stapled in the
  112. X   middle, folded, and cut to size to have a 16-page 3.5 x 8" booklet.
  113. X
  114. X - Use "make 2pass" to create a set of odd and even pages for double
  115. X   sided printing. First print "guide-odd.ps". Then put the paper back
  116. X   in the tray, and print either "guide-even1.ps" or "guide-even2.ps",
  117. X   depending on the way your printer arranges the printed paper.
  118. X
  119. "make" without arguments will default to refguide.ps .
  120. X
  121. If your printout is not correct, feel free to change the figures in
  122. the formatting program "psfmt".
  123. X
  124. Comments are welcome, send them to the author.
  125. X
  126. CREDITS
  127. =======
  128. X
  129. The Perl Reference Guide is copyrighted by the author. It may be
  130. reproduced, printed and distributed freely, as long as the original
  131. author gets the credits, and the copyright notice is not removed from
  132. the text. It may not be turned into a commercial product except with
  133. written permission of the author.
  134. X
  135. ---------------------------- author info -----------------------------
  136. X                Johan Vromans
  137. X Multihouse Research, Doesburgweg 7, 2803 PL  Gouda, the Netherlands
  138. X           tel. +31 1820 62911, fax. +31 1820 62500
  139. X              email: <jv@mh.nl>
  140. ----------------------------------------------------------------------
  141. X
  142. I like to thank everyone who has helped me to get the job done, and to
  143. get the results to you. Especially Paul O'Neill, Tom Christiansen, Ed
  144. Moy (for "macps"), JGreely (for "parr"), Edwin Kremer. And Larry Wall,
  145. of course, without whom I would have spent lots of time annoying
  146. myself.
  147. --
  148. PostScript is a trademark of Adobe, I assume.
  149. SHAR_EOF
  150. chmod 0444 README ||
  151. echo 'restore of README failed'
  152. Wc_c="`wc -c < 'README'`"
  153. test 3569 -eq "$Wc_c" ||
  154.     echo 'README: original size 3569, current size' "$Wc_c"
  155. rm -f _shar_wnt_.tmp
  156. fi
  157. # ============= Makefile ==============
  158. if test -f 'Makefile' -a X"$1" != X"-c"; then
  159.     echo 'x - skipping Makefile (File already exists)'
  160.     rm -f _shar_wnt_.tmp
  161. else
  162. > _shar_wnt_.tmp
  163. echo 'x - extracting Makefile (Text)'
  164. sed 's/^X//' << 'SHAR_EOF' > 'Makefile' &&
  165. # @(#)@ Makefile 1.13 - Makefile for Perl Reference Guide
  166. X
  167. SHELL    = /bin/sh
  168. X
  169. # Delete the next line if you use US Letter paper format
  170. PAPER    = -a4
  171. X
  172. AUX    = README Makefile parr psfmt
  173. X
  174. all:    refguide.ps
  175. X
  176. 2pass:    guide-odd.ps guide-even1.ps guide-even2.ps
  177. X
  178. # 2 pages per page, suitable for centrefold reference guide
  179. refguide.ps:    refbase.ps parr psfmt
  180. X    parr -o 16,1,2,15,14,3,4,13,12,5,6,11,10,7,8,9 refbase.ps \
  181. X    | psfmt $(PAPER) > refguide.ps
  182. X
  183. # Odd and even passes for centerfold printing. First print
  184. # guide-odd.ps, then find out which of the others to use.
  185. # guide-even1.ps is for Apple LaserWriter II, guide-even1.ps for old
  186. # Apple LaserWriters.
  187. guide-odd.ps:    refbase.ps parr psfmt
  188. X    parr -o 16,1,14,3,12,5,10,7 refbase.ps \
  189. X    | psfmt $(PAPER) > guide-odd.ps
  190. X
  191. guide-even1.ps:    refbase.ps parr psfmt
  192. X    parr -o 8,9,6,11,4,13,2,15 refbase.ps \
  193. X    | psfmt $(PAPER) > guide-even1.ps
  194. X
  195. guide-even2.ps:    refbase.ps parr psfmt
  196. X    parr -o 2,15,4,13,6,11,8,9 refbase.ps \
  197. X    | psfmt $(PAPER) > guide-even2.ps
  198. X
  199. clean:
  200. X    rm -f refguide.ps refcard.ps guide-odd.ps guide-even1.ps guide-even2.ps
  201. X
  202. # For maintenance use only ...
  203. X
  204. VER    = 4
  205. MINVER    = 0
  206. PL    = 0
  207. REV    = 1
  208. SRC    = RefGuide$(VER).$(MINVER).$(PL).$(REV).ps
  209. X
  210. refbase:    $(SRC)
  211. X    perl pssplit $(SRC)
  212. X    perl psjoin > refbase.ps
  213. X    rm -f Page-??.psx
  214. X
  215. shar:    Changes $(AUX) refbase.ps
  216. X    chmod 755 parr psfmt
  217. X    rm -f perfref_shr.*
  218. X    shar -c -n perlref$(VER)_$(PL)_$(REV) -a -s 'jv@mh.nl' \
  219. X    -o perlref_shr -L30 -f Changes $(AUX) refbase.ps
  220. X    ls -l perlref_shr.*
  221. X
  222. TZ:    $(AUX) refbase.ps
  223. X    pdtar -zcvf perlref.TZ $(AUX) refbase.ps
  224. SHAR_EOF
  225. chmod 0444 Makefile ||
  226. echo 'restore of Makefile failed'
  227. Wc_c="`wc -c < 'Makefile'`"
  228. test 1535 -eq "$Wc_c" ||
  229.     echo 'Makefile: original size 1535, current size' "$Wc_c"
  230. rm -f _shar_wnt_.tmp
  231. fi
  232. # ============= parr ==============
  233. if test -f 'parr' -a X"$1" != X"-c"; then
  234.     echo 'x - skipping parr (File already exists)'
  235.     rm -f _shar_wnt_.tmp
  236. else
  237. > _shar_wnt_.tmp
  238. echo 'x - extracting parr (Text)'
  239. sed 's/^X//' << 'SHAR_EOF' > 'parr' &&
  240. #!/usr/bin/perl
  241. X
  242. # @(#)@ parr 1.2
  243. X
  244. # rearrange conforming PS code to print the pages in an arbitrary
  245. # order.  The -[sS] options (for signature order) assume two-up, left
  246. # to right.  The -o option takes a list of ranges, like this:
  247. #    1-5    1-10,11-20    11-,1-10
  248. # usage: parr [-o list] [-s] [-S n] [file]
  249. #
  250. # jgreely@cis.ohio-state.edu, 89/10/23
  251. X
  252. $order='';
  253. $signFlag='';
  254. $signCount=0;
  255. $DEBUG=0;
  256. $rangePrint=0;
  257. $TMPDIR='/usr/tmp';
  258. X
  259. while ($_ = $ARGV[0],/^-/) {
  260. X    shift;
  261. X    last if /^-\-$/;
  262. X    /^-o/ && ($order = shift,next);
  263. X    /^-S/ && ($signCount = shift,$signFlag++,next);
  264. X    /^-s/ && ($signFlag++,next);
  265. X    /^-d/ && ($DEBUG++,next);
  266. X    /^-r/ && ($rangePrint++,next);
  267. X    die "usage: parr [-d] [-r] [-o list] [-s] [-S n] [file]\n";
  268. }
  269. if ($signFlag && $order) {
  270. X    die "parr: -s and -o cannot be used together\n";
  271. }
  272. X
  273. $file = "$TMPDIR/p$$.header";
  274. @files = ($file);
  275. $sheet=0;
  276. open(file,">$file") ||
  277. X  die "$file: $!, stopped";
  278. while (<>) {
  279. X    #
  280. X    # hack to use NeXT Preview: strip old '%%Pages:' lines
  281. X    #
  282. X    next if /^%%Pages:/;
  283. X    if (/^%%Page:/) {
  284. X        close(file);
  285. X        $sheet++;
  286. X        $file = "$TMPDIR/p$$.$sheet";
  287. X        push(@files,$file);
  288. X        open(file,">$file") ||
  289. X          die "$file: $!, stopped";
  290. X    }
  291. X    if (/^%%Trailer/) {
  292. X        close(file);
  293. X        $file = "$TMPDIR/p$$.trailer";
  294. X        push(@files,$file);
  295. X        open(file,">$file") ||
  296. X          die "$file: $!, stopped";
  297. X    }
  298. X    print file $_;
  299. }
  300. close(file);
  301. X
  302. @order = ();
  303. if ($order) {
  304. X    foreach $range (split(/,/,$order)) {
  305. X        ($start,$sep,$end) = split(/(-)/,$range);
  306. X        $start = 1 unless $start;
  307. X        $end = $sheet unless $end;
  308. X        if ($sep) {
  309. X            push(@order,$start..$end);
  310. X        }else{
  311. X            push(@order,$start);
  312. X        }
  313. X    }
  314. }elsif ($signFlag) {
  315. X    if (! $signCount) {
  316. X        $signCount = $sheet;
  317. X        $signCount += (4 - $sheet % 4) if ($sheet % 4);
  318. X    }else{
  319. X        $signCount *=4;
  320. X    }
  321. X    for($base=0;$base<$sheet;$base+=$signCount) {
  322. X        @tmp = ($signCount/2+$base);
  323. X        push(@tmp,$tmp[0]+1,$tmp[0]+2,$tmp[0]-1);
  324. X        while ($tmp[3] > $base) {
  325. X            push(@order,@tmp);
  326. X            @tmp = ($tmp[0]-2,$tmp[1]+2,$tmp[2]+2,$tmp[3]-2);
  327. X        }
  328. X    }
  329. }else{
  330. X    @order = (1..$sheet);
  331. }
  332. X
  333. @tmp=@order;
  334. @order=();
  335. foreach $page (@tmp) {
  336. X    push(@order,$page > $sheet ? "B" : $page);
  337. }
  338. X
  339. if ($rangePrint) {
  340. X    print join(',',@order),"\n";
  341. X    unlink @files unless $DEBUG;
  342. X    exit(0);
  343. }
  344. X
  345. open(file,"$TMPDIR/p$$.header");
  346. $_ = <file>;
  347. print $_,"%%Pages: (atend)\n";
  348. print while <file>;
  349. close(file);
  350. X
  351. foreach $page (@order) {
  352. X    $count++;
  353. X    print "%%Page: ? $count\n%%OldPage: $page\n";
  354. X    if ($page eq "B") {
  355. X        print "showpage\n";
  356. X    }else{
  357. X        open(file,"$TMPDIR/p$$.$page");
  358. X        while (<file>) {
  359. X            print unless /^%%Page:/;
  360. X        }
  361. X        close(file);
  362. X    }
  363. }
  364. open(file,"$TMPDIR/p$$.trailer");
  365. print while <file>;
  366. close(file);
  367. print "%%Pages: $count\n";
  368. X
  369. unlink @files unless $DEBUG;
  370. exit(0);
  371. SHAR_EOF
  372. chmod 0755 parr ||
  373. echo 'restore of parr failed'
  374. Wc_c="`wc -c < 'parr'`"
  375. test 2677 -eq "$Wc_c" ||
  376.     echo 'parr: original size 2677, current size' "$Wc_c"
  377. rm -f _shar_wnt_.tmp
  378. fi
  379. # ============= psfmt ==============
  380. if test -f 'psfmt' -a X"$1" != X"-c"; then
  381.     echo 'x - skipping psfmt (File already exists)'
  382.     rm -f _shar_wnt_.tmp
  383. else
  384. > _shar_wnt_.tmp
  385. echo 'x - extracting psfmt (Text)'
  386. sed 's/^X//' << 'SHAR_EOF' > 'psfmt' &&
  387. #!/usr/bin/perl -s
  388. #
  389. # @(#)@ psfmt 1.2 - Format perl reference guide
  390. #
  391. # Usage: parr -o ..... Pages.ps | psfmt [-a4] [-card] | lpr
  392. #
  393. # May be useful to format other Macintosh/MS-Word generated output also.
  394. #
  395. # Based on a program by jgreely@cis.ohio-state.edu, 89/10/23
  396. #
  397. X
  398. ################ [ -s params ] ################
  399. #
  400. # -a4: Use a4 format paper size (21 x 29.7 cm)
  401. $a4 = 0 unless defined $a4;
  402. #
  403. # -card: 3 columns per page
  404. #
  405. $modulus = 2 + defined $card;
  406. X
  407. ################ start of configuration section ################
  408. X
  409. $scale = 0.667;            # Output is prepared at 667%
  410. $xoffset = 0;
  411. $yoffset = -1;
  412. X
  413. # Displacements (in inches):
  414. X
  415. $xdisp = $a4 ? 8 : 8;
  416. X
  417. if ( $modulus == 2 ) {
  418. X    if ( $a4 ) {
  419. X    @ydisp = (1.33, 5.74);
  420. X    }
  421. X    else {
  422. X    # courtesy Tom Christiansen <convex!tchrist@uunet.UU.NET>
  423. X    @ydisp = (1.5625, 6.0625);
  424. X    }
  425. }
  426. else {
  427. X    if ( $a4 ) {
  428. X    @ydisp = (0, 3.67, 7.33);
  429. X    }
  430. X    else {
  431. X    # courtesy Tom Christiansen <convex!tchrist@uunet.UU.NET>
  432. X    @ydisp = (0.18750, 3.8125, 7.4375);
  433. X    }
  434. }
  435. ################ end of configuration section ################
  436. X
  437. $prolog = "";
  438. for $i (1..$modulus) {
  439. X    $prolog .= "/move$i { "
  440. X    . int(($xoffset+$xdisp)*72/$scale)
  441. X    . " "
  442. X    . int(($yoffset+$ydisp[$i-1])*72/$scale)
  443. X        . " "
  444. X    . "translate 90 rotate"
  445. X    . " } def\n";
  446. }
  447. X
  448. $_ = <>;
  449. if (/^%!PS-Adobe/) {
  450. X    print "%!PS-Adobe-2.0\n%%Pages: (atend)\n";
  451. else {
  452. X    die "Not conforming PostScript (no %!PS-Adobe), stopped";
  453. }
  454. X
  455. # read comment section (up to first non-%% line, or %%EndComments)
  456. #
  457. while (<>) {
  458. X    next if /^%%Pages:/;
  459. X    if (!/^%%/) {
  460. X    do print_prologue();
  461. X    print;
  462. X    last;
  463. X    }
  464. X    if (/^%%EndComments/) {
  465. X    print;
  466. X    do print_prologue();
  467. X    last;
  468. X    }
  469. X    print;
  470. }
  471. X
  472. while (<>) {
  473. X    next if /^%%Pages:/;
  474. X    next if /^op$/;
  475. X    next if /^F T cp$/;
  476. X
  477. X    if (/^%%Page:/) {
  478. X    do enter_page();
  479. X    next;
  480. X    }
  481. X    if (/^%%Trailer/) {
  482. X    do print_trailer();
  483. X    next;
  484. X    }
  485. X    print;
  486. }
  487. # print actual page count.  This must be the last trailer comment
  488. # printed.
  489. #
  490. print "%%Pages: $sheet\n";
  491. exit(0);
  492. X
  493. # the prolog consists of simple command definitions you want to make
  494. # available to the configuration routines.  None of them do anything
  495. # complicated, but why make life more difficult for the user?
  496. #
  497. sub print_prologue {
  498. X    print $prolog;
  499. }
  500. X
  501. # basically, at the beginning of a page, pull the number from the page
  502. # header, take it modulo $modulus, and print things based on that #
  503. # number.  If it's 1, end the previous sheet (if there is one),
  504. # increment the sheet number, and print a sheet header.     For all
  505. # pages, print the appropriate page motion command.
  506. #
  507. sub enter_page {
  508. X    $page++;
  509. X    ($foo,$bar,$oldpage) = split;
  510. X    die "Help! page number mismatch, stopped" if ($oldpage != $page);
  511. X    $temp = $page % $modulus;
  512. X    if ($temp == 1) {
  513. X    if ($sheet++) {
  514. X        print "F T cp\n";
  515. X    }
  516. X    print "%%Page: ? $sheet\n";
  517. X    }
  518. X    else {
  519. X    print "pm restore\n" if $sheet;
  520. X    $temp = $modulus if $temp == 0;
  521. X    }
  522. X    print "op\nmove$temp\n";
  523. }
  524. X
  525. sub print_trailer {
  526. X    print "F T cp\n" if $page;
  527. X    print "%%Trailer\n";
  528. }
  529. X
  530. SHAR_EOF
  531. chmod 0755 psfmt ||
  532. echo 'restore of psfmt failed'
  533. Wc_c="`wc -c < 'psfmt'`"
  534. test 3029 -eq "$Wc_c" ||
  535.     echo 'psfmt: original size 3029, current size' "$Wc_c"
  536. rm -f _shar_wnt_.tmp
  537. fi
  538. # ============= refbase.ps ==============
  539. if test -f 'refbase.ps' -a X"$1" != X"-c"; then
  540.     echo 'x - skipping refbase.ps (File already exists)'
  541.     rm -f _shar_wnt_.tmp
  542. else
  543. > _shar_wnt_.tmp
  544. echo 'x - extracting refbase.ps (Text)'
  545. sed 's/^X//' << 'SHAR_EOF' > 'refbase.ps' &&
  546. %!PS-Adobe-2.0
  547. %%Title: PerlRef 3.044
  548. %%Creator: MS-Word 4.0 NL
  549. %%CreationDate: Thursday, January 17, 1991
  550. %%Pages: (atend)
  551. %%BoundingBox: ? ? ? ?
  552. %%PageBoundingBox: 28 29 565 812
  553. %%For: Johan Vromans
  554. %%BeginProcSet
  555. %%EndComments
  556. /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}
  557. ifelse}setscreen} bind def statusdict begin product(LaserWriter II)anchorsearch end
  558. {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
  559. /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
  560. systemdict/currentpacking known{currentpacking true setpacking}if
  561. /LW{save statusdict/product get(LaserWriter)anchorsearch
  562. exch pop{length 0 eq{1}{2}ifelse}{0}ifelse exch restore}bind def
  563. /LW+{LW 2 eq}bind def
  564. /ok{systemdict/statusdict known dup{LW 0 gt and}if}bind def
  565. /md 250 dict def md begin
  566. /av 0 def
  567. /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
  568. 1 0 mtx defaultmatrix dtransform exch atan/pa exch def/nlw .24 def/ppr [-32 -29.52 762 582.48] def
  569. /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
  570. /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
  571. /fg (Rvd\001\001\000\000\177) def
  572. /bdf{bind def}bind def
  573. /xdf{exch def}bdf
  574. /xl{neg exch neg translate}bdf
  575. /fp{pnsh 0 ne pnsv 0 ne and}bdf
  576. /nop{}bdf/lnop[/nop load]cvx bdf
  577. /vrb[
  578. {fp{fg 6 get 0 ne{gsave stroke grestore}{gsave 1 setlinewidth pnsh pnsv scale stroke grestore}ifelse}if newpath}bind
  579. /eofill load
  580. dup
  581. /newpath load
  582. 2 index
  583. dup
  584. {clip newpath}bind
  585. {}bind
  586. dup
  587. 2 copy
  588. ]def
  589. currentscreen/spf xdf/rot xdf/freq xdf
  590. /doop{vrb exch get exec}bdf
  591. /psu{/tso xdf /fNote xdf/fBitStretch xdf/scaleby96 xdf/yflip xdf/xflip xdf
  592. /invertflag xdf/dbinvertflag invertflag statusdict begin version cvr 47.0 ge product (LaserWriter) eq not and end invertflag and {not}if def
  593. xflip yflip or{/noflips false def}if
  594. /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
  595. /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
  596. /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
  597. 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 
  598. 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}
  599. {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
  600. 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
  601. 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
  602. /fr{4 copy ppr aload pop 3 -1 roll add 3 1 roll exch add 6 2 roll 3 -1 roll
  603. sub 3 1 roll exch sub 3 -1 roll exch div 3 1 roll div exch scale pop pop xl}bdf
  604. /obl{{0.212557 mul}{pop 0}ifelse}bdf
  605. /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
  606. /fnt{findfont sfd}bdf
  607. /bt{sa 3 1 roll 3 index and put}bdf
  608. /sa(\000\000\000\000\000\000\000\000\000\000)def
  609. /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
  610. /mx1 matrix def
  611. /mx2 matrix def
  612. /mx3 matrix def
  613. /bu{currentpoint currentgray currentlinewidth currentlinecap currentlinejoin currentdash exch aload length
  614. fg 5 sfl{1}{0}ifelse put pnsv pnsh
  615. 2t aload pop 3a aload pop mx2 aload pop mx1 aload pop mtx currentmatrix aload pop
  616. mx3 aload pop ps pm restore/ps xdf mx3 astore pop}bdf
  617. /bn{/pm save def mx3 setmatrix newpath 0 0 moveto ct dup 39 get 0 exch getinterval cvx exec
  618. mtx astore setmatrix mx1 astore pop mx2 astore pop 3a astore pop
  619. 2t astore pop/pnsh xdf/pnsv xdf gw
  620. /sfl fg 5 get 0 ne def array astore exch setdash setlinejoin setlinecap
  621. setlinewidth setgray moveto}bdf
  622. /fc{save vmstatus exch sub 50000 lt
  623. {(%%[|0|]%%)=print flush}if pop restore}bdf
  624. /tc{32768 div add 3 1 roll 32768 div add 2t astore pop}bdf
  625. /3a [0 0 0] def
  626. /2t 2 array def
  627. /tp{3a astore pop}bdf
  628. /tt{mx2 currentmatrix pop currentpoint 2 copy 2t aload pop qa 2 copy translate 3a aload pop exch dup 0 eq
  629. {pop}{1 eq{-1 1}{1 -1}ifelse scale}ifelse rotate pop neg exch neg exch translate moveto}bdf
  630. /te{mx2 setmatrix}bdf
  631. /th{3 -1 roll div 3 1 roll exch div 2 copy mx1 scale pop scale/sfl true def}bdf
  632. /tu{1 1 mx1 itransform scale/sfl false def}bdf
  633. /ts{1 1 mx1 transform scale/sfl true def}bdf
  634. /fz{/ps xdf}bdf
  635. /dv{dup 0 ne{div}{pop}ifelse}bdf
  636. /pop4{pop pop pop pop}bdf
  637. /it{sfl{mx1 itransform}if}bdf
  638. /gm{exch it moveto}bdf/rm{it rmoveto}bdf
  639. /lm{currentpoint sfl{mx1 transform}if exch pop sub 0 exch it rmoveto}bdf
  640. /fm{statusdict/manualfeed known}bdf
  641. /se{statusdict exch/manualfeed exch put}bdf
  642. /mf{dup/ma exch def 0 gt{fm se/t1 5 st ok ma 1 gt and{/t2 0 st/t3 0 st
  643. statusdict/manualfeedtimeout 3600 put
  644. }if}if}bdf
  645. /jn{/statusdict where exch pop{statusdict exch /jobname exch put}if}bdf
  646. /pen{pnm mul/pnsh xdf pnm mul/pnsv xdf pnsh setlinewidth}bdf
  647. /min{2 copy gt{exch}if pop}bdf
  648. /max{2 copy lt{exch}if pop}bdf
  649. /dh{fg 6 1 put array astore dup {1 pxs div mul exch}forall astore exch pop exch pop exch setdash}bdf
  650. /ih[currentdash]def
  651. /rh{fg 6 0 put ih aload pop setdash}bdf
  652. /dl{gsave nlw pys div setlinewidth 0 setgray}bdf
  653. /dlin{exch currentpoint currentlinewidth 2 div dup
  654. translate newpath moveto lineto currentpoint stroke grestore moveto}bdf
  655. /lin{fg 6 get 0 ne{exch lineto currentpoint 0 doop moveto}
  656. {exch currentpoint/pnlv xdf/pnlh xdf gsave newpath/@1 xdf/@2 xdf fp{pnlh @2 lt{pnlv @1 ge
  657. {pnlh pnlv moveto @2 @1 lineto pnsh 0 rlineto
  658. 0 pnsv rlineto pnlh pnsh add pnlv pnsv add lineto pnsh neg 0 rlineto}
  659. {pnlh pnlv moveto pnsh 0 rlineto @2 pnsh add @1 lineto 0 pnsv rlineto
  660. pnsh neg 0 rlineto pnlh pnlv pnsv add lineto}ifelse}{pnlv @1 gt
  661. {@2 @1 moveto pnsh 0 rlineto pnlh pnsh add pnlv lineto 0 pnsv rlineto
  662. pnsh neg 0 rlineto @2 @1 pnsv add lineto}{pnlh pnlv moveto pnsh 0 rlineto
  663. 0 pnsv rlineto @2 pnsh add @1 pnsv add lineto pnsh neg 0 rlineto
  664. 0 pnsv neg rlineto}ifelse}ifelse
  665. closepath fill}if @2 @1 grestore moveto}ifelse}bdf
  666. /gw{/pnm fg 3 get fg 4 get div def}bdf
  667. /lw{fg exch 4 exch put fg exch 3 exch put gw pnsv pnsh pen}bdf
  668. /barc{/@1 xdf/@2 xdf/@3 xdf/@4 xdf/@5 xdf
  669. /@6 xdf/@7 xdf/@8 xdf gsave
  670. @5 @7 add 2 div @6 @8 add 2 div translate newpath 0 0 moveto
  671. @5 @7 sub @6 @8 sub mtx currentmatrix pop scale @1{newpath}if
  672. 0 0 0.5 @4 @3 arc @4 @3 sub abs 360 ge{closepath}if
  673. mtx setmatrix @2 doop grestore}bdf
  674. /ar{dup 0 eq barc}bdf
  675. /ov{0 exch 360 exch true barc}bdf
  676. /rc{/@t xdf currentpoint 6 2 roll newpath 4 copy 4 2 roll exch moveto
  677. 6 -1 roll lineto lineto lineto closepath @t doop moveto}bdf
  678. /mup{dup pnsh 2 div le exch pnsv 2 div le or}bdf
  679. /rr{/@1 xdf 2. div/@2 xdf 2. div/@3 xdf
  680. /@4 xdf/@5 xdf/@6 xdf/@7 xdf
  681. @7 @5 eq @6 @4 eq @2 mup or or{@7 @6 @5 @4 @1 rc}
  682. {@4 @6 sub 2. div dup @2 lt{/@2 xdf}{pop}ifelse
  683. @5 @7 sub 2. div dup @2 lt{/@2 xdf}{pop}ifelse
  684. @1 0 eq{/@2 @2 pnsh 2 div 2 copy gt{sub def}{0 pop4}ifelse}if
  685. currentpoint newpath
  686. @4 @6 add 2. div @7 moveto
  687. @4 @7 @4 @5 @2 arcto pop4
  688. @4 @5 @6 @5 @2 arcto pop4
  689. @6 @5 @6 @7 @2 arcto pop4
  690. @6 @7 @4 @7 @2 arcto pop4
  691. closepath @1 doop moveto}ifelse}bdf
  692. /pr{gsave newpath/pl{exch moveto/pl{exch lineto}def}def}bdf
  693. /pl{exch lineto}bdf
  694. /ep{dup 0 eq{{moveto}{exch lin}{}{(%%[|1|]%%)= flush}pathforall
  695. pop grestore}{doop grestore}ifelse currentpoint newpath moveto}bdf
  696. /gr{64. div setgray}bdf
  697. /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
  698. /sg{freq rot/spf load setscreen gr}bdf
  699. /dc{transform round .5 sub exch round .5 sub exch itransform}bdf
  700. /sn{userdict/smooth4 known}bdf
  701. /x8{3 bitshift}bdf
  702. /x4{2 bitshift}bdf
  703. /d4{-2 bitshift}bdf
  704. /d8{-3 bitshift}bdf
  705. /rb{15 add -4 bitshift 1 bitshift}bdf
  706. /db{/@7 save def/@1 xdf/@2 xdf/@3 xdf/@4 xdf/@5 xdf/@6 @5 @3 4 add mul def
  707. dc translate scale/xdbit 1 1 idtransform abs/ydbit exch def abs def{0 0 1 ydbit add 1 10 rc clip}if
  708. @1 0 eq @1 4 eq or{1 setgray ydbit 0 1 ydbit add 1 2 rc}if
  709. @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
  710. @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
  711. abs/calcX 1 index def round cvi scaleby96 not{1 add}if def/@16 @15 rb def/@17 @16 @14 mul def}if
  712. 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
  713. currentfile @6 string readhexstring pop 1 index @4 @3 @5 @12 @2 smooth4
  714. @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
  715. 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
  716. @7 restore}bdf
  717. /multibit{/mbdeep exch def/mbY exch def/mbX exch def
  718. save mbX mbY mbdeep[mbX 0 0 mbY 0 0]{currentfile picstr readhexstring pop}image
  719. restore}bdf
  720. /wd 16 dict def
  721. /mfont 14 dict def
  722. /mdf{mfont wcheck not{/mfont 14 dict def}if mfont begin xdf end}bdf
  723. /cf{{1 index/FID ne{def}{pop pop}ifelse}forall}bdf/rf{/@1 exch def/@2 exch def
  724. FontDirectory @2 known{cleartomark pop}{findfont dup begin dup length @1 add dict begin
  725. cf{/Encoding macvec def}{Encoding dup length array copy/Encoding exch def
  726. counttomark 2 idiv{Encoding 3 1 roll put}repeat}ifelse
  727. pop
  728. exec currentdict end end @2 exch definefont pop}ifelse}bdf
  729. /bmbc{exch begin wd begin
  730. /cr xdf
  731. save
  732. CharTable cr 6 mul 6 getinterval{}forall
  733. /bitheight xdf/bitwidth xdf
  734. .96 div/width xdf
  735. Gkernmax add/XOffset xdf Gdescent add/YOffset xdf/rowbytes xdf
  736. rowbytes 255 eq{0 0 0 0 0 0 setcachedevice}
  737. {Gnormsize dup scale
  738. width 0 XOffset YOffset bitwidth XOffset add bitheight YOffset add
  739. setcachedevice
  740. rowbytes 0 ne{
  741. XXOffset YOffset translate newpath 0 0 moveto
  742. bitwidth bitheight scale
  743. sn{
  744. /xSmt bitwidth x4 def
  745. /ySmt bitheight x4 def
  746. /rSmt xSmt rb def
  747. rSmt x8 ySmt true
  748. [xSmt 0 0 ySmt neg 0 ySmt]
  749. {rSmt ySmt mul string CharData cr get
  750. 1 index bitwidth bitheight rowbytes rSmt tso smooth4}
  751. }{rowbytes 3 bitshift bitheight 4 add true
  752. [bitwidth 0 0 bitheight neg 0 bitheight 2 add]
  753. {CharData cr get}
  754. }ifelse
  755. imagemask
  756. }if
  757. }ifelse
  758. restore
  759. end end
  760. }bdf
  761. /bb{.96 exch div/Gnormsize mdf 2 index
  762. /Gkernmax mdf 1 index/Gdescent mdf
  763. 3 index div 4 1 roll
  764. 2 index div 1. 5 2 roll
  765. exch div 4 1 roll
  766. 4 array astore/FontBBox mdf
  767. }bdf
  768. /cdf{mfont/CharData get 3 1 roll put}bdf
  769. /bf{
  770. mfont begin
  771. /FontType 3 def
  772. /FontMatrix [1 0 0 1 0 0] def
  773. /Encoding macvec def
  774. /BuildChar/bmbc load def
  775. end
  776. mfont definefont pop
  777. }bdf
  778. /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
  779. /aps{0 get 124 eq}bdf
  780. /xc{s75 cvs dup}bdf
  781. /xp{put cvn}bdf
  782. /scs{xc 3 67 put dup 0 95 xp}bdf
  783. /sos{xc 3 79 xp}bdf
  784. /sbs{xc 1 66 xp}bdf
  785. /sis{xc 2 73 xp}bdf
  786. /sob{xc 2 79 xp}bdf
  787. /sss{xc 4 83 xp}bdf
  788. /dd{exch 1 index add 3 1 roll add exch}bdf
  789. /smc{moveto dup show}bdf
  790. /kwn{FontDirectory 1 index known{findfont exch pop}}bdf
  791. /gl{1 currentgray sub setgray}bdf
  792. /mm{/mfont 10 dict def mfont begin
  793. /FontMatrix [1 0 0 1 0 0] def
  794. /FontType 3 def
  795. /Encoding macvec def
  796. /df 4 index findfont def
  797. /FontBBox [0 0 1 1] def
  798. /xda xdf/mbc xdf
  799. /BuildChar{wd begin/cr xdf/fd xdf/cs s1 dup 0 cr put def fd/mbc get exec end}def
  800. exec end mfont definefont}bdf
  801. /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
  802. fmv{/Encoding macvec def}if/StrokeWidth nlw 1000 mul pys div ps div dup 12 lt{pop 12}if def
  803. /PaintType 2 def currentdict end definefont}ifelse}bdf
  804. /mb{dup sbs kwn{exch{pop}{bbc}{}mm}ifelse sfd}bdf
  805. /mo{dup sos kwn{exch{pop}{boc}{}mm}ifelse sfd}bdf
  806. /ms{dup sss kwn{exch{pop}{bsc}{}mm}ifelse sfd}bdf
  807. /ou{dup sos kwn{exch dup ac pop{scs findfont /df2 xdf}{aoc}{}mm}ifelse sfd}bdf
  808. /su{dup sss kwn{exch dup ac pop{scs findfont /df2 xdf}{asc}{}mm}ifelse sfd}bdf
  809. /ao{/fmv true def ou}bdf/as{/fmv true def su}bdf
  810. /vo{/fmv false def ou}bdf/vs{/fmv false def su}bdf
  811. /bbc{/da .03 def fd/df get setfont
  812. gsave cs wi 1 index 0 ne{exch da add exch}if grestore setcharwidth
  813. cs 0 0 smc da 0 smc da da smc 0 da moveto show}bdf
  814. /boc{/da 1 ps div def fd/df get setfont
  815. gsave cs wi 1 index 0 ne{exch da add exch}if grestore setcharwidth
  816. cs 0 0 smc da 0 smc da da smc 0 da smc gl da 2. div dup moveto show}bdf
  817. /bsc{/da 1 ps div def
  818. /ds .05 def/da2 da 2. div def fd/df get setfont
  819. gsave cs wi 1 index 0 ne{exch ds add da2 add exch}if grestore setcharwidth
  820. cs ds da2 add .01 add 0 smc 0 ds da2 sub translate 0 0 smc
  821. da 0 smc da da smc 0 da smc gl da 2. div dup moveto show}bdf
  822. /aoc{fd/df get setfont
  823. gsave cs wi grestore setcharwidth
  824. gl cs 0 0 smc fd/df2 get setfont gl 0 0 moveto show}bdf
  825. /asc{/da .05 def fd/df get setfont
  826. gsave cs wi 1 index 0 ne{exch da add exch}if grestore setcharwidth
  827. cs da .01 add 0 smc 0 da translate gl 0 0 smc gl fd/df2 get setfont 0 0 moveto show}bdf
  828. /st{1000 mul usertime add dup 2147483647 gt{2147483647 sub}if def}bdf
  829. /the{usertime sub dup 0 lt exch -2147483648 gt and}bdf
  830. /6a 6 array def
  831. /2a 2 array def
  832. /3q 3 array def
  833. /qs{3 -1 roll sub exch 3 -1 roll sub exch}bdf
  834. /qa{3 -1 roll add exch 3 -1 roll add exch}bdf
  835. /qm{3 -1 roll 1 index mul 3 1 roll mul}bdf
  836. /qn{6a exch get mul}bdf
  837. /qA .166667 def/qB .833333 def/qC .5 def
  838. /qx{6a astore pop
  839. qA 0 qn qB 2 qn add   qA 1 qn qB 3 qn add
  840. qB 2 qn qA 4 qn add   qB 3 qn qA 5 qn add
  841. qC 2 qn qC 4 qn add   qC 3 qn qC 5 qn add}bdf
  842. /qp{6 copy 12 -2 roll pop pop}bdf
  843. /qc{exch qp qx curveto}bdf
  844. /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
  845. /qq{{qc 2a aload pop qx curveto}{exch 4 copy qs qa qx curveto}ifelse}bdf
  846. /pt{currentpoint newpath moveto}bdf
  847. /qf{/fillflag true def}bdf
  848. /ec{1 and 0 ne{0 doop}if grestore currentpoint newpath moveto/fillflag false def}bdf
  849. /eu{currentpoint fp{0 ep}{grestore newpath}ifelse moveto/fillflag false def}bdf
  850. /bp{currentpoint newpath 2 copy moveto}bdf
  851. /ef{gsave fillflag{gsave eofill grestore}if}bdf
  852. /sm{0 exch{@1 eq{1 add}if}forall}bdf
  853. /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
  854. 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
  855. SHAR_EOF
  856. true || echo 'restore of refbase.ps failed'
  857. fi
  858. echo 'End of perlref3_44_0 part 1'
  859. echo 'File refbase.ps is continued in part 2'
  860. echo 2 > _shar_seq_.tmp
  861. exit 0
  862. -- 
  863. Johan Vromans                       jv@mh.nl via internet backbones
  864. Multihouse Automatisering bv               uucp: ..!{uunet,hp4nl}!mh.nl!jv
  865. Doesburgweg 7, 2803 PL Gouda, The Netherlands  phone/fax: +31 1820 62911/62500
  866. ------------------------ "Arms are made for hugging" -------------------------
  867.  
  868.  
  869.