HDTenEightyP/NetNews huggingface dataset:
From: mende@piecomputer.rutgers.edu (Bob Mende Pie)
Newsgroups: comp.lang.perl
Subject: die hook
Date: 13 Aug 92 21:56:22 GMT
Organization: 40.34N / 74.44W +25m Sol 3


   I am currently working on a set of programs that use common "required"
packages.  I use the die command in many of the different monules and
packages.  Depending on what main program I use to invoke the program, I
would possibly like to add a "hook" to the die command that would run a
subroutine before exiting.  It could be used for cleaning up lockfiles,
saving the state of arrays, whatever.  Since I can not be sure how my
modules will be called this hook may or not be in existance.   Is there a
subroutine that die will try to call when it is invoked.   If not this
would be a useful addition.   It could be as simple as the perl code:
	&'die if defined &'die;
-- 
					/Bob...
{...}!rutgers!mende      mende@piecomputer.rutgers.edu      mende@zodiac.bitnet
From: lwall@netlabs.com (Larry Wall)
Newsgroups: comp.lang.perl
Subject: Re: Bug with $number variables ???
Date: 19 Aug 92 06:52:28 GMT
Organization: NetLabs, Inc.

In article <1992Aug19.040708.519@ucsu.Colorado.EDU> farnham@spot.Colorado.EDU (Farnham Dave) writes:
: The two lines I'm referring to are:
:     ($login = $1) =~ s/:$//;  # remove ':'
:     $shell = $2;
: 
: In PL-35 "$2" has vanished.  It appears that after a
: substitute all the $number variables get reset to null
: even if I don't do another capture.
: 
: This wasn't the case in PL-19.  Was I abusing PL-19 or
: did something break?

It's documented that $1 et al refer back to the last successful pattern
match (which includes patterns used by substitutes).  It was more or
less a bug in 4.019 that a successful match didn't always invalidate
prior values.  It's best to capture $1, $2, etc. immediately before
doing another pattern match, unless you really do want $2 from the last
successful match.  I'd usually do either of

    if ($line =~ /($search_str).*:.*:.*:.*:.*:(.*)$/) {
	($login, $shell) = ($1,$2);
	$login =~ s/:$//;

or

    if (($login,$shell) = $line =~ /($search_str).*:.*:.*:.*:.*:(.*)$/) {
	$login =~ s/:$//;

By the way, that's a VERY inefficient pattern.  Consider that each of
those .*'s must go to the end of the string and then back off,
recursively trying all the rest of the patterns after it, which in turn
go to the end of the string, recursively trying all the rest of the
patterns after it, which in turn go to the end...  You get the picture.
It'd be faster to use [^:]* when you mean it.  Also, you should put an
o modifier on if the pattern is fixed for a given process run.

It'd be much faster to just take advantage of the fact that .* will match
everything to the last ":", like this:

    $search_str = '^farnham\b';
    ...
    ($login,$shell) = $line =~ /($search_str).*:(.*)$/o;

Or just throw in a

    next unless $line =~ /$search_str/o;
    ($login,$pw,$uid,$gid,$gcos,$home,$shell) = split(/:/,$line);

Since you don't execute the split line very often, it doesn't matter
how long it takes.  Even if you did the split on every line it'd still
be faster than your original pattern.

Rule of Thumb: Never use .* when you can use something else.

Now, you probably knew all that already...

Larry
Newsgroups: comp.lang.perl
From: ckd@eff.org (Christopher Davis)
Subject: Re: Applauds for Mr. Wall (LOUD)
Organization: Electronic Frontier Foundation Tech Central
	<1992Aug20.010559.26935@nuscc.nus.sg>
Date: Thu, 20 Aug 1992 22:10:06 GMT

Heng> == Heng Kek <ccechk@nuscc.nus.sg> 

 Heng> I hope someday, I'll be able to answer questions in the newsgroup
 Heng> rather than always asking them.

Don't worry, you will.  You can't pay it back, but you can pay it forward.
--
Christopher Davis * ckd@eff.org * System Administrator, EFF * +1 617 864 0665
            ``Ed Gruberman, you fail to grasp Ti Kwan Leep.
            Approach me that you might see.'' -- The Master
Newsgroups: comp.lang.perl
From: andy@orchid.bdc.ubc.ca (Andrew Dwelly)
Subject: Re: Arrays of filehandles
Organization: University of British Columbia, Vancouver, B.C., Canada
Date: Mon, 17 Aug 1992 16:27:10 GMT

In article <l8o27cINNocq@jethro.Corp.Sun.COM> eric.arnold@Sun.COM (Eric  
arnold) writes:
> but I am also puzzled about why this doesn't work:
> 
> 	$fh_gen = "FH000";
> 	for ( 1..25 ){ push( @a, $fh_gen++ ) ; }
> 	open($a[0],"<one");
> 	while (<$a[0]>)
> 	{
> 	    print;
> 	}

Larry was kind enough to mail me with the answer. Apparently
the angle bracket notation is quite strict about what it will accept,
anything apart from <thingy> or <$thingy> is regarded as 
a file glob. 

In my more complex script I found that even this form causes 
problems so in the end I avoided the whole problem by writing a 
metaprogram. It reads the names of the files to be worked on,
assigns an ordinary filehandle to each one then writes out
a second program that does the actual job. Then it just
executes the second program.

The metaprogram is a bit complicated to read because it's full of
escapes, but the generated program is quite simple and extremely fast.
My user is happy so I'm happy as well.

Andy (andy@bcu.ubc.ca)
From: harres@sundance.uwyo.edu (John M. Harres)
Newsgroups: comp.lang.perl
Subject: compiling under SunOS 4.1.2
Date: 12 Aug 92 19:52:07 GMT
Distribution: comp.lang.perl,world
Organization: /usr/users/harres/.organization

I am attempting to compile perl 4.035 under SunOS 4.1.2 with gcc 2.2.2.
Running TEST, it failed test 0 of com/cpp, test 0 of op/eval, test 59 of
op/regexp, and then core dumps after passing lib/big.

Any ideas??

John Harres
harres@sundance.uwyo.edu
--
-------------------------------------------------------------------------------
       John Harres       |   Sherlock Holmes observed that once you have
                         |   eliminated the impossible, then whatever remains,
  Systems Programmer II  |   however improbable, must be the answer.  I,
  University of Wyoming  |   however, do not like to eliminate the impossible.
harres@sundance.uwyo.edu |    -- Dirk Gently
From: vspicer@ccu.umanitoba.ca
Newsgroups: comp.lang.perl
Subject: Re: Applauds for Mr. Wall (LOUD)
Date: 18 Aug 92 23:53:25 GMT
Organization: University of Manitoba, Winnipeg Manitoba Canada

one can't say enough. i haven't had this much fun programming computers since
high school using Zbasic on a TRS-80 Model 4. thanks larry!  


------
vic spicer, recent PERL convert/ data systems,instrument electronics and
software person with the Time of Flight Mass Spec. Lab
at the University of Manitoba Dept. of Physics
From: jhd@irfu.se (Jan D.)
Subject: Re: What's the best idiom for storing keyed records?
Date: Wed, 19 Aug 1992 07:21:46 GMT
Organization: Swedish Institute of Space Physics, Uppsala, Sweden

In FAQ 17 tchrist@convex.COM (Tom Christiansen) writes:
>
>17) How can I make an array of arrays or other recursive data types?
>
	[stuff deleted]
>
>    You could take a look at recurse.pl package posted by Felix Lee
>    <flee@cs.psu.edu>, which lets you simulate vectors and tables (lists and
>    associative arrays) by using type glob references and some pretty serious
>    wizardry.

Anybody know where this can be found?

>    is the name of that person's parent.  Make sure you remember that
>    $parent{'adam'} is 'adam'. :-) With a little care, this approach can
>
$parent{'adam'} is 'god' and $parent{'god'} is 'god', no? :-)

	Jan D.
From: lance@caesar.ucs.indiana.edu (Lance Speelmon)
Subject: open2 w/ telnet
Organization: Indiana University
Date: Wed, 19 Aug 1992 14:41:16 GMT


I am trying to do some telnet scripting with open2.  Is this the
correct library to use?  Has anyone done this before?

Any tips would be greatly appreciated.

Thanks,
Lance
-- 
 ============================================================================
|  Lance Speelmon                  |     University Computing Services       |
|  lance@indiana.edu               |	 LAN Systems Support Specialist      |
 ============================================================================
From: ccechk@nuscc.nus.sg (Heng Kek)
Newsgroups: comp.lang.perl
Subject: Re: Assoc array indirection
Date: 18 Aug 92 02:02:19 GMT
Organization: National University of Singapore

lwall@netlabs.com (Larry Wall) writes:
: In article <1992Aug17.100513.9649@nuscc.nus.sg> ccechk@nuscc.nus.sg (Heng Kek) writes:
...[stuff deleted]...
: : print eval "\@ipaddr{@host[0..1]}";              # no go
: : print eval "\@ipaddr{join(',', @host[0..1])}";  # no go
: : print eval "\@ipaddr{$host[0], $host[1]}";      # okay
...[stuff deleted]...
: Why do you need the eval?

I guess I (the original poster) didn't post a very good example for
what I was trying to find out, in my hurried quest for a quick answer.
Here's a better illustration as to why I needed the 'eval':

#!/usr/bin/perl
@host   = ('nusunix1', 'nusunix2', 'nusunix3');

$nusunix1{'john'} = '555/666/k ';
$nusunix1{'mary'} = '666/777/l ';
$nusunix1{'pete'} = '888/999/m ';

@names = ('john', 'mary', 'pete');

print eval "\@$host[0]{\@names[0..2]}";  # okay.
print "\n";
#print eval "\@$host[0]{@names[0..2]}";  # This doesn't work.

The above works, thanks to all your responses.


Sincerely
Heng Kek
National Univ of S'pore
From: lwall@netlabs.com (Larry Wall)
Newsgroups: comp.lang.perl
Subject: Re: Bad label: _EVAL_, inconsistent behavior
Keywords: eval, setuidness, etc.
Date: 15 Aug 92 19:27:51 GMT
Distribution: usa
Organization: NetLabs, Inc.

In article <1992Aug14.184402.25912@rayssd.ssd.ray.com> ras@rayssd.ssd.ray.com (Shaw) writes:
: ...
: Bad label: _EVAL_ at passutils.pl line 375, <STDIN> line 3.
: 
: I've also tried:
: 	eval "return \$answer if (\$answer =~ $test)";
: and
: 	eval qq:return $answer if (\$answer =~ $test):;
: as well as a few other combnations.  The "Bad label:" message
: comes out on the next call to the subroutine after I've changed
: something, and refers to <STDIN> line N, where N is the number of
: times it's run the sub and gotten an answer.
: 
: Any clues?  I find no reference to _EVAL_ in the Book, and mysterious
: references to the "qq" mechanism didn't seem to help either.

You're basically confusing the heck out of the runtime system by
returning from something that isn't a subroutine.  The text of an eval
is considered its own thing, like a parameterless subroutine.  If
return were to mean anything in an eval, it should probably mean to
terminate the eval itself rather than the surrounding subroutine, if any.

The gory details go like this: the subroutine, if it contains a return
(and that means an ordinary return, not one embedded in an eval, which
the parser can't see at compile time--your subroutine happens to have
one, but your program would have blown up differently if it hadn't),
pushes a mystical label _SUB_ on the label stack so the return will
know where to longjmp() out to.  The eval then sets the global Boolean
variable in_eval and pushes a mystical label _EVAL_ onto the label
stack so that fatal errors know they are being trapped and should
longjmp() back to the eval code.  When you do a return in an eval, it
pops the _EVAL_ label, finds the _SUB_ label, and does a longjmp()
around the eval "destructor" code that turns off the global in_eval
flag, so the NEXT time you get a fatal error it tries to return to a
no-longer existing _EVAL_ label.  (Yes, I could just look for an _EVAL_
label instead of testing in_eval, but in_eval is used other places
too.  Among other things, the tokener has to know whether it's reading
from a string or from a file.  I'm planning on doing away with
longjmp() anyway, so it's not really an issue in Perl 5--the
"destructor" code will presumably reset in_eval correctly.)

Anyway, I'm not going to advertise a fix for it until I decide what
"return" really should mean in an eval.  I don't think it's reasonable
to try to pretend that evaled code is inlined--for one thing, it would
mean I'd have to turn off many of the optimizations that are done in a
subroutine containing an eval.  And it would be nice to have a way to
short-circuit an eval or a require.  There's no way to do that
conveniently at the moment without faking a fatal error, which is
useless in require and even in eval has the unwanted side effect of
setting $@.  If you expect return to terminate an eval in Perl 5,
you're unlikely to be surprised...   :-)

Larry
From: cracraft@wheat-chex.ai.mit.edu (Stuart Cracraft)
Newsgroups: comp.lang.perl
Subject: comp.lang.perl.scripts (?)
Date: 22 Aug 92 16:14:07 GMT
Organization: MIT Artificial Intelligence Lab


I would like a newsgroup where perl scripts of general use
can be posed. Also, subroutines that solve typical everyday
common problems could be posted.

If anyone else favors this, please let us know. Proposed name
for the group is comp.lang.perl.scripts.

Stuart
Newsgroups: comp.lang.perl
From: davew@jpl-devvax.jpl.nasa.gov (Dave Wagner)
Subject: Whereis ftp.pl?
Organization: Jet Propulsion Laboratory (NASA)
Date: Tue, 18 Aug 1992 17:23:01 GMT

I must have missed it when it was announced... Where can I get a copy
of ftp.pl?


-- 
===========================================================================
David Wagner			Phone: (818) 354-1148
Jet Propulsion Laboratory	Mail Code: 301-345
4800 Oak Grove Drive		Internet: dave@natasha.Jpl.Nasa.Gov
From: cracraft@rice-chex.ai.mit.edu (Stuart Cracraft)
Newsgroups: comp.lang.perl
Subject: Network version of CLIP
Date: 19 Aug 92 17:41:19 GMT
Organization: MIT Artificial Intelligence Lab


Does anyone have a Network version of CLIP that
can connect to and communicate with a newserver?
I notice that clip itself expects a local history file.

Stuart
From: przemek@rrdstrad.nist.gov (Przemek Klosowski)
Newsgroups: comp.lang.perl
Subject: handling symbolic links
Date: 21 Aug 92 18:19:48 GMT
Organization: U. of Maryland/NIST


Hello!

Here's a perl script to handle symbolic links to software distribution
directories.  A baroque solution to a simple problem? maybe; but I did
fail on several occasions to stick to my own style of disk management
because of those pesky links that cannot be renamed but have to be
deleted.

BTW, I did not mean to suggest that perl-4.035 is buggy; the example
directory used below was chosen at random. In fact, I did delete the old
directory :^)

#!/usr/local/bin/perl
# Copyright (c) 1992 Przemek Klosowski at NIST. All Rights Reserved
# Filename: relink
# Usage:    relink symlink-name [target-name]
#           Does remember where did the old link go, and tries to guess the new one
# $Id$
# Rationale: When updating software, one may still want to keep the old 
#            version around, in case the new one is buggy. In such cases
#            one may want to have a symlink directory pointing
#            to the latest distribution directory:
#                   perl@ -> perl-4.035
#                   perl-4.035/
#                   perl-4.019/
#            This makes the configuration easier, since one can always use
#            the directory 'perl' as a location of the most recent version.
#            Maintaining links manually is tedious, as one first has to delete 
#	     the link and then recreate it with a new name.
#  
#            This script is useful in such cases; one may call it to set up
#            the initial link ('relink perl perl-4.019'); later, when one 
#            installs the new version, one would just say 'relink perl' to
#            to change the link to point to perl-4.035 (if there is a unique
#            new target directory, it is used as the default; otherwise one
#            would specify it as in the example 4 lines above.

# History:              przemek - Aug 20, 1992: Created.

($symlink, $newdir) = @ARGV;

unless (-l $symlink) {
    -e _ && die "relink: $symlink is not a symbolic link ($!)\n";
}
# if we're here, $symlink either does not exist yet or is a genuine symlink
unless($newdir) {
    # Weird stuff. Only $newdir is being changed
    ($newdir = ($target = readlink($symlink))) =~ s/[-.0-9]*$//;
    chop (@candidates = `ls -d $newdir*`);
    @candidates = grep(!/^(($target)|($symlink))[\/]?$/, @candidates);
    $#candidates == $[ ||	# could be either too little or too many
	die "Please specify target for symbolic link '$symlink'\n";
    $newdir = $candidates[$[];
}
unlink($symlink);
symlink($newdir,$symlink);


==================end of program=================================

--
			przemek klosowski (przemek@rrdstrad.nist.gov)
			Reactor Division (bldg. 235), E111
			National Institute of Standards and Technology
			Gaithersburg, MD 20899,      USA

			(301) 975 6249
Newsgroups: comp.lang.perl
From: cole@concert.net (Derrick C. Cole)
Subject: Re: Help with named pipes
Organization: MCNC Data Operations
Date: Thu, 13 Aug 1992 01:30:18 GMT

In article <mcook.713657379@fendahl.dev.cdx.mot.com> mcook@fendahl.dev.cdx.mot.com (Michael Cook) writes:
>
>>Now, 120 is an arbitrary number out of the air.  What I'd really like is for
>>read() to place in $buf a null-terminated string as written by the other end,
>>and not just 120 characters.  Am I completely blind, is there a way to do
>>this, neither, or both?
>
>How about this:
>
>  $/ = "\000";		# the input record separator
>  while (<FIFO>)
>  {
>    chop;		# discard the \0
>    print "|$_|\n";
>  }

Greetings, Michael!

That _almost_ works (a lot cleaner, too!)  All I did to change the above was
remove the record separator assignment to take the default and voila!  It
works (with the assignment, $_ grows and grows, printing only when the writer
closes!)  Thanks so much for helping me with this trivial problem.

Derrick

-- 
"GCC 2.0 is to C as SVR4 is to Unix."
                       -- Dick Dunn
======
Derrick Cole                                  MCNC Center for Communications
From: lwall@netlabs.com (Larry Wall)
Newsgroups: comp.lang.perl
Subject: Re: perl sort bug on Irix?
Date: 14 Aug 92 16:39:59 GMT
Organization: NetLabs, Inc.

In article <93641@bu.edu> jdh@bu-pub.bu.edu (Jason Heirtzler) writes:
: Perl's sort seems to behave oddly on Irix.  What I would like
: to do is an inverse sort based on the length.  Is this program
: correct perl (ie. not some implementation dependant thing?)
: 
:   #!/usr/local/bin/perl --    # -*-Perl-*-
: 
:   push( @dirs, "usr" );
:   push( @dirs, "usr/bin" );
:   push( @dirs, "usr/bin/X11" );
:   push( @dirs, "usr/lib" );
: 
:   @crud =  sort {length($a) < length($b);} @dirs;

Using < only gives a two state answer (0 and 1).  Sort subroutines need
to supply a three state answer (<0, 0, >0).  It just so happens :-)
that there's now a <=> operator (called the spaceship operator for
reasons that will be obvious to anyone who's seen Star Wars) that
returns (-1,0,1).  So the preferred solution in recent Perls would be

    @crud = sort { length($b) <=> length($a) } @dirs

(Note that we reverse $a and $b to reverse the ordering, since the spaceship
operator only orders in the ascending direction.  (Likewise for "cmp", which
orders strings rather than numbers.))

: What is the appropriate way to do the same sort on previous
: releases?  At patch level 10 perl bawks at the sort syntax
: (guess it's new syntax.)

Well, hey, if you can invent a nifty new work like "bawk"...  :-)

As you switch to progressively older versions, you'd have to supply a
semicolon at the end of the block, remove the block into a separate
subroutine definition, and change the spaceship operator to a minus.

: "Congratulations.  You aren't running Eunice."

In actual fact, I have nothing much against Eunice.  I think the WG did
remarkably well considering the host environment.

You can verify this by looking at the other leg of the conditional in
Configure.  If you ARE running Eunice, it's not Eunice that Configure
complains about.

Larry
Newsgroups: comp.lang.perl
From: Tom Christiansen <tchrist@convex.COM>
Subject: Re: What's the best idiom for storing keyed records?
Originator: tchrist@pixel.convex.com
Date: Wed, 19 Aug 1992 12:38:43 GMT
Reply-To: tchrist@convex.COM (Tom Christiansen)
Organization: CONVEX Realtime Development, Colorado Springs, CO
X-Disclaimer: This message was written by a user at CONVEX Computer
              Corp. The opinions expressed are those of the user and
              not necessarily those of CONVEX.

From the keyboard of jhd@irfu.se (Jan D.):
:Anybody know where this can be found?

Sure, in <F-ade_g3@cs.psu.edu>, posted on 28 Nov 90 10:48:56 GMT
to this newsgroup.  :-)

I really really need a mail server for the perl archives, I can tell.

Meanwhile, see /pub/perl/scripts/recurse.pl.  I need to mkake 
a perl/lib directory I can see.  Also, it unpacked with 4666
chars, and complained it was the wrong size.

--tom

-- 
    Tom Christiansen      tchrist@convex.com      convex!tchrist


    It's all magic.  :-)        --Larry Wall in <7282@jpl-devvax.JPL.NASA.GOV>
From: rm55+@pitt.edu (Rudolph T Maceyko)
Newsgroups: comp.lang.perl
Subject: script/library revisited
Date: 21 Aug 92 19:10:44 GMT
Organization: University of Pittsburgh


The recent discussion about stand-alone scripts that can also be required
seems to have expired at my site, at just the time that I'm interested in
it...

Would someone please recap or send me their schemes for doing this?

Thanks,
Rudy


-- 
Rudy Maceyko
<rm55+@pitt.edu> or <rtm+@cmu.edu>
Pittsburgh, Pennsylvania USA
From: jbryans@beach.csulb.edu (Jack Bryans)
Newsgroups: comp.lang.perl
Subject: postmaster bounce filter perl script wanted
Date: 12 Aug 92 20:24:49 GMT
Organization: Cal State Long Beach

I could've sworn a script to filter out all but relevant headers from a
postmaster bounce went by here a while back, but I hadn't sense enough to
save a copy.  Can someone point me at where to get one?

Thanks,
Jack
From: lwall@netlabs.com (Larry Wall)
Newsgroups: comp.lang.perl
Subject: Re: What's the best idiom for storing keyed records?
Date: 19 Aug 92 07:18:54 GMT
Article-I.D.: netlabs.1992Aug19.071854.8942
Organization: NetLabs, Inc.

In article <1992Aug19.004516.12825@news.eng.convex.com> tchrist@convex.COM (Tom Christiansen) writes:

: Make sure you remember that $parent{'adam'} is 'adam'. :-) With a
: little care, this approach can be used to implement general graph
: traversal algorithms as well.

Er, uh, I have it on pretty good authority (Luke, in actual fact :-) that
$parent{'adam'} eq 'god'.  I'll leave to you to figure out $parent{'god'}...

Hmm, I guess in my theology that makes $sibling{'adam'} eq 'jesus'...  :-)
That makes Jesus his own great, great, great...lessee...great**72 uncle
or so.  Better check that one out:

    $ perl -e 'print $sibling{ eval "\$parent{" x 73 . "jesus" . "}" x 73 }'
    jesus
    $

Yep.  :-)

Larry
From: dl2p+@andrew.cmu.edu (Douglas Allen Luce)
Newsgroups: comp.lang.perl
Subject: Mirror script
Date: 17 Aug 92 10:41:28 GMT
Article-I.D.: andrew.4eXz=Me00XQL8f=0wa
Organization: Chemical Engineering, Carnegie Mellon, Pittsburgh, PA

Hello,

Has anyone gotten the mirror script (available on UUNET in the packages
directory, i believe) to work?  It seems to be an under-development
program.  I do the configuration just like it says, and it goes and
tells me that it's thinking of doing what I ask, but it quits quickly
and doesn't do anything.
 
I'd be interested in hearing experiences with this script.

Doug Luce
ChemE
CMU
Newsgroups: comp.lang.perl
From: cole@concert.net (Derrick C. Cole)
Subject: Re: Help with named pipes
Organization: MCNC Data Operations
Date: Wed, 12 Aug 1992 16:22:24 GMT

In article <3310@ra.nrl.navy.mil> fenner@cmf.nrl.navy.mil (William C Fenner) writes:
>In article <1992Aug12.140317.1603@rock.concert.net> cole@concert.net (Derrick C. Cole) writes:
>|#!/usr/local/bin/perl
>|
>|($pipe) = @ARGV;
>|$pipe = "/var/log/modemlog" unless $pipe;
>|
>|if (-p $pipe) {
>|   open(FIFO, "$pipe") || die "can't open $pipe\n";
>|   while (<>) {
>|      read(FIFO, $buf, 120);
>|      print "$buf";
>|   }
>|} 
>
>Why are you reading from <>?  The C code didn't read anything from anything
>other than the pipe.  Do you mean while (1)?

You're right!  It should be while(1).  However, open() still doesn't seem to
return to enter the read loop.

Derrick

-- 
If I had been an eight foot monster with acidic blood, deadly teeth and claws,
and had been stuck in a story as brain-damaged as that of Aliens 3, I would
have attacked everything in sight too...  oh the humanity!
======