HDTenEightyP/NetNews huggingface dataset:
From: mcook@fendahl.dev.cdx.mot.com (Michael Cook)
Subject: Re: Perl range operator
Keywords: range
Organization: Motorola Codex, Canton, Massachusetts
Date: Thu, 31 Dec 1992 15:07:24 GMT

rfs@se28.wg2.waii.com (Robert Starr) writes:

>In some recent work I was doing, I noticed the following:

>	@x = (10..1);

>doesn't generate the range 10 -> 1, as one might expect.  Is there a
>reason it doesn't work this way?

10..1 is a null range.  Having it work that way simplifies the mechanism and
removes much of the need for special-case handling.  Consider the case when
the range ends are not static:

	for ($x..$y)

you don't have to first test to make sure $x <= $y.  If you really meant to
have a reverse range, you can do this:

	@x = reverse(1..10);
or
	for (reverse $x..$y)

BTW, that's the way it works in Ada, too:

   for i := reverse 1..10 loop

For code such as this:

   for i := x..y loop

the compiler would otherwise have to generate code like this:

   if (x <= y)
      for (i = x; i <= y; i++)
         ...
   else
      for (i = x; i >= y; i--)
         ...

Michael.
Newsgroups: comp.lang.perl
From: wittig@gmd.de (Georg Wittig)
Subject: Re: Arrgh: Looking for usenet news watcher
Organization: GMD, Sankt Augustin, Germany
Date: Wed, 23 Dec 1992 08:44:10 GMT

Tom Christiansen <tchrist@convex.COM> writes:

>Check out the 'clip' program on convex.com in /pub/perl/scripts/clip --

But convex.com:/pub/perl isn't readable	!?

--
Georg Wittig                  GMD-I8.IT                                         Schloss Birlinghoven          P. O. Box 1316                                    D-W-5205 Sankt Augustin 1     Germany
email: Georg.Wittig@gmd.de    telephone: (+49) 2241 14-2294
 ------------------------------------------------------------------------------
"In the beginning was the word, but it wasn't a fixed number of bits."
From: wiml@stein.u.washington.edu (William Lewis)
Newsgroups: comp.lang.perl
Subject: Re: fork and STDOUT
Date: 31 Dec 1992 04:39:07 GMT
Organization: University of Washington
NNTP-Posting-Host: stein.u.washington.edu

essbaum@rchland.vnet.ibm.com (Alexander Essbaum) writes:
>if (!($pid = fork)) {
>	open (cmd,"$cmd|");   # $cmd is a call to another perl script
>	print <cmd>;
>	exit 0;
>}

>the stuff returned in <cmd> (which comes from print "..."; and `...`; lines
>in $cmd) doesn't print properly.  it seems to be getting buffered such that
>when $cmd exits, all of STDERR gets printed, then all of STDOUT. 

  Generally, stder doesn't get redirected along with stdout. (That's
its purpose for being separate.) I'd guess that the error output is
going straight to your tty when $cmd runs, but stdout is getting trapped
in the pipe. Then you print the pipe's contents on the next line. So
all the error output will precede the normal output.


>open (something,">&STDOUT");

>can someone explain exactly what this does (what is "duping"?) or maybe
>point me where to look (i checked the FAQ)?

  The dup() call (in unix) takes a file descriptor and returns another
file decriptor which references the same file (or tty or socket or
whatever). The dup2() call does the same thing, except you can specify
which file descriptor you want it to return. So if you specify stdout,
then stdout will start behaving just like whatever fd it was you duplicated
into it. (This is how you redirect output into a file, for example.)
I'm not sure if I'm being entirely clear here, but the Unix man pages for
dup() and dup2() are the place to look.
Newsgroups: comp.lang.perl
From: cameron@cs.unsw.oz.au
Subject: quick /*NOTREACHED*/ hack for perl ...
Reply-To: cameron@cs.unsw.oz.au
Organization: CS&E Computing Facility, Uni Of NSW, Oz
Errors-To: cameron@cs.unsw.oz.au
Date: Tue, 22 Dec 1992 02:35:42 GMT
Return-Receipt-To: cameron@cs.unsw.oz.au

This is a runtime check, but can be scatter through code like the lint one,
as a subroutine call, viz:
	while (1)
		{ blah...; last # shouldn't happen ever
		  more blah ...
		}

	&NOTREACHED;

The code:

sub NOTREACHED { local($package,$filename,$line)=caller;

                 die "$line of $filename (package $package) should not be reached";
               }
	- Cameron Simpson
	  cameron@cs.unsw.oz.au, DoD 0743
--
"The engine purrs beneath me with a purpose,
 ready for the pleasure of my hand upon the throttle." - Peter Smith
From: roy%cybrspc@cs.umn.edu (Roy M. Silvernail)
Newsgroups: comp.lang.perl
Subject: Re: *sigh* Yes, the eternal question: How do I run it under 4dos aga
Date: Fri, 01 Jan 93 17:04:32 CST
Organization: Villa CyberSpace, Minneapolis, MN

kenc@sol.acs.unt.edu (Ken Corey - Operator) writes:

> anyway, what's the line I put in 4dos.ini so that 4dos recognixses .pl as an 
> executable, and runs perl on that script?

Not in the .ini, but in autoexec.bat, put

set .pl=c:\where\ever\perl.exe

Works for me.  For command line flags, put 'em in the #!/usr/bin/perl
line at the beginning of the script.
--
Roy M. Silvernail --  roy%cybrspc@cs.umn.edu - OR-  cybrspc!roy@cs.umn.edu
#! /usr/bin/perl
         open(I,"$0");@a=(<I>);shift(@a) until $a[0] =~ /^#!/;
         open(I,">>$ENV{'HOME'}/.signature");print I @a;__END__
         <perl signature virus V2.0 - do 'perl -x articlename'>
From: landman@hal.COM (Howard Landman)
Newsgroups: comp.lang.perl
Subject: Re: In 5.0, are we gonna get...
Date: 30 Dec 92 21:52:25 GMT
Organization: HaL Computer Systems, Inc.
NNTP-Posting-Host: bang.hal.com

In article <1992Dec14.192007.7534@wdl.loral.com> mab@wdl39.wdl.loral.com (Mark A Biggar) writes:
>Larry has talked about adding a 'reduce' operator that
>calls a special sort like function (used $a,$b for arg passing) on each element 
>of a list for doing summations like so:
>
>	$sum = reduce {$a+$b} 1,34,$x,45,-8,0.1;

You should look at the way this sort of thing is handled in data-parallel
languages, such as those for programming the Connection Machine.  C* is
probably the closest to Perl in flavor.  It's very clean and natural.

The only difficulty I can see is a potential conflict with the current behavior
of arrays in a scalar context.

	Howard A. Landman
	HaL Computer Systems
From: kumar@cs.purdue.edu (Sandeep Kumar)
Newsgroups: comp.lang.perl
Subject: Debugging support
Date: 27 Dec 1992 15:08:19 -0500
Organization: Department of Computer Sciences, Purdue University
NNTP-Posting-Host: ector.cs.purdue.edu

Whenever I debug a perl script its says - Emacs support available but I
could never find it. I know about perl.el but is there something like
run-perl (akin to run-dbx) with an inferior process running perl which
tracks source in another window and has the "standard" bindings for setting
breakpoints, stepping etc...

Please respond by e-mail.

Thanks
-- 
--sandeep
From: bobw@mge.uucp (bobw)
Newsgroups: comp.lang.perl
Subject: forking and waiting
Date: 23 Dec 92 15:06:22 GMT
Distribution: comp
Organization: MG-Entreprises, Paris, France

I'm designing a system that collects information nightly from 17
different sites on our network.

The sites are connected together by routers, which communicate through
the national ISDN network here in France.

We have two lines into the ISDN net, and we would like to use them as
fully as possible to finish the transfer as quickly as possible.

My idea is to fork 17 processes, each of which will try to get the
data from a remote site (ftp or rcp?). Clearly, only two at a time
will get through, since there are only two channels that can be used
simultaneously. I should be able to look at return codes or something
to see which have succeeded, and pass this info back to the parent
process via intermediate files.

Assuming the logic is OK till this point, I need to know which child
returned. Since I will be issuing a "system" within the child, if I
understood the doc., with a "wait", I may not get back a child pid
that I know about, and if I issue a "waitpid" I need to know which pid
I'm waiting for, which is not the case.

I'm sure I've missed something obvious, but am not sure what? 

Any suggestions or comments would be _very_ welcome.

Please respond by mail.

Thanks and regards,

Bob

--
Robert Wornan		| uucp: bobw@mge.uucp
MG Entreprises		| internet: bobw@mg-entreprises.fr
42 rue Voltaire		| tel: +33 1 42 04 35 83
92800 Puteaux,	France	
-- 
Robert Wornan		| uucp: bobw@mge.uucp
MG Entreprises		| internet: bobw@mg-entreprises.fr
42 rue Voltaire		| tel: +33 1 42 04 35 83
92800 Puteaux,	France
From: tal@Warren.MENTORG.COM (Tom Limoncelli)
Newsgroups: comp.lang.perl
Subject: Re: Perl range operator
Date: 31 Dec 1992 21:07:11 -0500
Organization: Mentor Graphics -- IC Group
NNTP-Posting-Host: jamal.warren.mentorg.com
Keywords: range

In <mcook.725814444@fendahl.dev.cdx.mot.com> mcook@fendahl.dev.cdx.mot.com (Michael Cook) writes:


>	@x = reverse(1..10);
>or
>	for (reverse $x..$y)

>BTW, that's the way it works in Ada, too:

What a load off my shoulders!  I was getting worried that Perl might
not have enough Ada-like idioms.  Now my worries are over.

Sigh.

Tom "My last obnoxious post of 1992" Limoncelli

-- 
Tom Limoncelli -- tal@warren.mentorg.com (work) -- tal@plts.uucp (play)

Unix is a trademark of, WHATT????
From: sommar@enea.se (Erland Sommarskog)
Newsgroups: comp.lang.perl
Subject: Re: Dynamic grepping
Date: 24 Dec 92 23:55:37 GMT
Organization: Enea Data AB

Piet van Oostrum (piet@cs.ruu.nl) writes:
>>>>>> cwalker@rchland.vnet.ibm.com (Cary Walker) (CW) writes:
>CW> unshift(@checkstrs, "1111foo222");
>CW> unshift(@checkstrs, "foofoo");
>CW> $grepstr="\d";
>
>Make that $grepstr="\\d";

Or better $grepstr = '\d';

No reason to double a backslash when you don't need to.
-- 
Erland Sommarskog - ENEA Data, Stockholm - sommar@enea.se
Jag gav en k{ck tjeck en check.
Newsgroups: comp.lang.perl
From: lwall@netlabs.com (Larry Wall)
Subject: Re: Package & Namespace Question
Keywords: package, inheritance, perl 5
Organization: NetLabs, Inc.
Date: Mon, 21 Dec 1992 19:51:46 GMT

In article <163@eiffel.eiffel.com> ram@eiffel.com (Raphael Manfredi) writes:
: Now, did I do a good job in convincing you?

Why can't a program just declare an ANY package if it wants it?  It
seems to me that the purpose of package main is to be a hodgepodge,
while the purpose of an ANY package is to be a peg on which to hang a
(hopefully very minimal) number of global methods.  Some problems are
better solved with hodgepodges, and some with tightly controlled object
semantics.  I don't want to confuse the two.  It's not as if an
object's method can't get at a main subroutine if it wants to
anyway.

Perhaps I ought to rename package main as package GLUE...

Larry
Newsgroups: comp.lang.perl
From: kmeek@cti.com (Kevin Meek)
Subject: Perl messing up simple multiplication
Keywords: math perl 
Organization: Comprehensive Technologies Int., Inc.
Date: Tue, 29 Dec 1992 14:22:31 GMT

Hi:

I compiled perl on one of our At&T 3B2's and have copied that 
same executable to about 20 other machines.  I've been running perl 
scripts on these machines for about 2 years and never had any problems.

Yesterday I was setting up another machine and had a problem with 
one of my scripts producing strange numbers.  I tracked the problem 
down to something screwy with the math.  It was messing up simple 
multiplication.

Below is a simple script that shows the problem:

$ cat test.prl
eval "exec /usr/local/perl -S $0 $*"
  if $running_under_some_shell;

  $| = 1;
  print "\nEnter number of blocks: ";
  $blocks = <>;
  $mbytes = $blocks * 512 / 1000000;
  print "Megabytes = $mbytes\n";

$ test.prl

Enter number of blocks: 34378
Megabytes = 1.7580310727061837e-314


This number should be 17.6015 or some such which is what I get on
all my other machines.

Am I missing something basic or is there something different about the
size of an integer or something.

As far as I can tell there is nothing different about this machine
than the others that run the script beautifully.

I guess I could build perl on this machine and it might fix it

Any Idea what could be causing these strange results?

Thanks

Kevin
-- 
Kevin Meek 
kmeek@cti.com
From: soup@ampersand.com (Doug Campbell)
Newsgroups: comp.lang.perl
Subject: Bug with foreach/local in 4.035
Date: 28 Dec 92 10:50:43
Organization: Ampersand Inc., Westford, Mass.
Distribution: comp
NNTP-Posting-Host: ampersand.ampersand.com


There appears to be a bug (or at least a surprising behavior) in 4.035
regarding foreach and local.  It seems that a construct like:

	foreach $i (@list)

will  cause a subsequent (down the call stack) "local ($i)" to cause the
item  in  @list  currently  referenced  by $i  to appear  blank.   For
example, this program:

-------------------------------
sub fn
{
    local ($i);
    print ("nums= @nums\n");
};

@nums = (1, 2, 3);
print ("nums= @nums\n");

foreach $i (@nums)
{
    &fn ($i);
};
-------------------------------
prints out:

nums= 1 2 3
nums=  2 3
nums= 1  3
nums= 1 2 

whereas it should print out:

nums= 1 2 3
nums= 1 2 3
nums= 1 2 3
nums= 1 2 3

Changing  the  "local  ($i)"  to "local  ($j)" fixes  the problem, but
having to make  sure there  are no variable  name conflicts is hard to
do.   Instead,  my current workaround  is to  change  the  "foreach $i
(@nums)" line to "foreach $i (@unused = @nums)", and  never use vector
@unused.  A little ugly, but workable.

These  results were obtained with perl  4.035 on  SunOS 4.1.1 compiled
with Sun's cc.

						Doug Campbell
						soup@ampersand.com
Newsgroups: comp.lang.perl
From: barr@pop.psu.edu (David Barr)
Subject: Perl bug regarding ($foo,@bar)=&func();
Organization: Penn State Population Research Institute
Date: Sat, 02 Jan 93 20:55:26 GMT

$RCSfile: perl.c,v $$Revision: 4.0.1.7 $$Date: 92/06/08 14:50:39 $
Patch level: 35

In the following code, case 1 will work, while case 2 will seg fault.
(Thanks to Bill Fenner for writing this sample code based on one of my
messes)

Is there a fix for this?

#!/usr/bin/perl
#

&recurse(1);

sub recurse {
	local($level)=@_;
	local(@foo);

	print "Level $level...\n";
#
# Case 1 works.
#	@foo=&getstuf($level);		# case 1
#	$junk=shift(@foo);		#
#
# Case 2 seg faults when we go to recurse
	($junk,@foo)=&getstuf($level);	# case 2
#
	print join(" ",@foo),"\n";
	foreach $i (@foo) {
		print "About to call recurse($i)...\n";
		&recurse($i);
	}
}

sub getstuf {
	local($level)=@_;

	("junk",($level > 5) ? () : (($level+1) x $level));
}

--Dave
-- 
System Administrator, Population Research Institute    barr@pop.psu.edu
#define ENOTTY          25              /* Not a typewriter */
From: mike@meiko.com (Mike Stok)
Newsgroups: comp.lang.perl
Subject: Re: Perl range operator
Keywords: range
Date: 30 Dec 92 21:39:57 GMT
Organization: Meiko Scientific Corp.

In article <1992Dec30.131700@se28.wg2.waii.com> starr@wg2.waii.com writes:
>In some recent work I was doing, I noticed the following:
>
>	@x = (10..1);
>
>doesn't generate the range 10 -> 1, as one might expect.  Is there a
>reason it doesn't work this way?

'cos it uses the magical autoincrement algorithm (according to p90 of
the Camel book), and autodecrement isn't magical (p81)...

Not to worry, 

	@x = reverse (1 .. 10);

is not too obscure :-)

Mike
--
The "usual disclaimers" apply.    |
Mike Stok                         |
mike@meiko.com                    |
Meiko tel: (617) 890 7676         |
From: patl@bodacia.Eng.Sun.COM (Pat Lashley)
Newsgroups: comp.lang.perl
Subject: Re: Help -- why doesn't it work?
Date: 23 Dec 1992 00:22:46 GMT
Organization: Sun Microsystems, Inc.
Distribution: world
Reply-To: patl@bodacia.Eng.Sun.COM
NNTP-Posting-Host: bodacia

In article 35130@Lehigh.EDU, lusol@Lehigh.EDU (Stephen O. Lidie) writes:
|>Too many backslashes.... you just need two:
|>
|>system("find . -user $olduid -exec chown $newuid {} \\;");
|>
|>Might need a space after the {} as well - I do on AIXches.
|>
|>
|>Just anovice Perl hacker,

If you have xargs, it is usually better to use:

	system ("find . -user $olduid -print | xargs chown $newuid");

Using -exec forks a chown process for every file found; but xargs will
append several file names to each chown process.



-Pat



---
PMLashley	plashley@Sun.COM    SunSoft:NeWS/TNT
"Those who do not understand NeWS are doomed to recreate it - badly"
From: rfs@se28.wg2.waii.com (Robert Starr)
Newsgroups: comp.lang.perl
Subject: Perl range operator
Keywords: range
Date: 30 Dec 92 19:17:00 GMT
Reply-To: starr@wg2.waii.com
Organization: Western Geophysical

In some recent work I was doing, I noticed the following:

	@x = (10..1);

doesn't generate the range 10 -> 1, as one might expect.  Is there a
reason it doesn't work this way?

-- 
| RF Starr (starr@wg2.waii.com) | Western Geophysical | Opinions R mine! |
Newsgroups: comp.lang.perl,comp.sys.mac.programmer
From: neeri@iis.ethz.ch (Matthias Neeracher)
Subject: Macintosh (MPW) Perl: New Release, New Site
Followup-To: comp.sys.mac.programmer
Organization: Integrated Systems Laboratory, ETH, Zurich
Distribution: comp
Date: Mon, 21 Dec 1992 11:16:42 GMT


Version 4.0.5 of the MPW C incarnation of Perl for the Apple Macintosh is
now available. Since the last widely announced release, the following was
added:

 - Upgraded to Unix Patchlevel 35
 - Socket support
 - Gdbm support
 - Lots of smaller fixes

Perl is now available at the following site:

     Host: nic.switch.ch [130.59.1.40]
Path: software/mac/src/mpw_c/Mac_Perl_405_{appl,tool,src}.sit.bin

Mac_Perl_405_tool.sit.bin contains an MPW Tool.
Mac_Perl_405_appl.sit.bin contains a standalone application. If you don't
   have (or don't even know) MPW, you need this.
Mac_Perl_405_src.sit.bin contains the MPW C sources.

The archives are stored as MacBinary II files in StuffIt 3.x format. You can
unpack StuffIt archives with StuffIt Expander, which can be downloaded as
software/mac/src/decompression/stuffit-expander-101.hqx. I wish I could give
more precise instructions to help you transferring the files safely to your
Mac, but there is a wide variety of configurations out there. If you have
problems, ask me.

System Requirements

Perl really likes MPW. The standalone version is not much use yet. Some of the 
really cool features require MPW ToolServer, System 7, and enough RAM (Notably
stuff like `CFront MacApp.cp` or open(XXX, "Help Commands |"))
Some of the files barely compile with 5 megabytes of RAM.

Changing the source

To work with the source, you need MPW 3.2 or later. If you want to make changes
to the perly.y file, you also need bison or yacc. The current version of Perl
needs to be linked with gdbm (database routines) and GUSI (socket routines),
which can be found in the same directory as Perl.

Matthias

-----
Matthias Neeracher                                   neeri@iis.ethz.ch
        "I came to the conclusion that sex is a sublimation
         of the work instinct" -- David Lodge, _Small World_
Newsgroups: comp.lang.perl
From: essbaum@rchland.vnet.ibm.com (Alexander Essbaum)
Subject: more on can't get pid
Date: Tue, 29 Dec 1992 16:58:34 GMT
Disclaimer: This posting represents the poster's views, not necessarily those of IBM
Organization: IBM Rochester

oops, forgot this:

in case it matters, i'm using

Revision: 4.0.1.7
Patch level: 34
AIX3.2 on RS6000

axel
From: wiml@milton.u.washington.edu (William Lewis)
Newsgroups: comp.lang.perl
Subject: Arrgh: Looking for usenet news watcher
Date: 22 Dec 92 23:55:49 GMT
Article-I.D.: u.1992Dec22.235549.9148
Organization: University of Washington, Seattle

A while ago, I saw a Perl script posted that would read news for me
and (presumably) do something if an article was found that matched 
certain criteria. This was nice because I've been meaning to write
such a script for some time. I thought I'd saved it in a file somewhere,
but now when I actually want to set it up, I can't find it. Furthermore,
it doesn't seem to be in any of the newsgroups that I've checked for
it (comp.lang.perl, alt.sources, etc.) Argh! Did anyone else see this
script, or was I just dreaming? If anyone could point out where it is
I'd be eternally grateful, or at least grateful for a while ... thanks...

-- 
email: wiml@u.washington.edu             |  Home:  Seattle, Washington   |
     (William Lewis)                     |  47 41' 15" N   122 42' 58" W | 
NeXTmail: wiml@ingalls.cs.washington.edu `-------------------------------'
        --*-- Member, Coalition to Preserve Semantic Vacuity --*--
Newsgroups: comp.lang.perl
From: chare@unilabs.uucp (Chris Hare)
Subject: blocking open on pipes
Organization: UniLabs Research Group
Date: Tue, 29 Dec 1992 04:22:27 GMT

I am writing an application will will interact with a named pipe.  How do I
keep perl from suceeding on the open intil there is a process to write to
the pipe?

Thanks!

-- 
????                --- It Always works for me! ---                           
Chris Hare, UNIX Scientist                  Preferred : chare@unilabs.org
Just a mild-mannered consultant by day ....
Newsgroups: comp.lang.perl
From: Tom Christiansen <tchrist@convex.COM>
Subject: Re: Arrgh: Looking for usenet news watcher
Originator: tchrist@pixel.convex.com
Date: Wed, 23 Dec 1992 14:09:08 GMT
Reply-To: tchrist@convex.COM (Tom Christiansen)
Organization: Convex Computer Corporation, 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 wittig@gmd.de (Georg Wittig):
:Tom Christiansen <tchrist@convex.COM> writes:
:>Check out the 'clip' program on convex.com in /pub/perl/scripts/clip --
:But convex.com:/pub/perl isn't readable	!?

Sorry.  Fixed.  You could still get to the scripts directory though.  One
doesn't really need read permission for that.

--tom
-- 
    Tom Christiansen      tchrist@convex.com      convex!tchrist
        echo "Hmmm...you don't have Berkeley networking in libc.a..."
        echo "but the Wollongong group seems to have hacked it in."
            --Larry Wall in Configure from the perl distribution
From: roy%cybrspc@cs.umn.edu (Roy M. Silvernail)
Newsgroups: comp.lang.perl
Subject: Re: Copying files; system and exec for MS-DOS perl?
Date: Sun, 03 Jan 93 00:53:03 CST
Organization: Villa CyberSpace, Minneapolis, MN

aeichsta@athena.mit.edu (Andrew J. Eichstaedt) writes:

> I'm using Len Reed's version of Perl for MS-DOS.  I wanted my perl script
> simply to copy a file to another, new file.
>
> * Failing a built-in copy function, I thought I could do something like
> system("copy $oldFile $newFile").  However, I can't seem to get system or
> exec working in the version of perl I'm using.  A line like
> perl -e "system('dir')" seems to do nothing in the DOS version, whereas 
> perl -e "system('ls')" gives a directory (as I'd expect) when I try it on a
> Unix machine.  Again, am I missing something obvious?

I'd say it's something obvious... :-)

It appears (and I'll have to do some experimenting to verify this) that
perl is handling the system() call without a new instantiation of the
command processor.  The 'dir' command is a builtin for command.com and
4dos, so it fails (since a new command shell wasn't spawned).  But 'ls'
works because Unix shells typically have very few builtin commands.  The
'ls' calls the external command program 'ls', not a builtin shell
command.
--
Roy M. Silvernail --  roy%cybrspc@cs.umn.edu - OR-  cybrspc!roy@cs.umn.edu
#! /usr/bin/perl
         open(I,"$0");@a=(<I>);shift(@a) until $a[0] =~ /^#!/;
         open(I,">>$ENV{'HOME'}/.signature");print I @a;__END__
         <perl signature virus V2.0 - do 'perl -x articlename'>
Newsgroups: comp.lang.perl