[27997] in Perl-Users-Digest

home help back first fref pref prev next nref lref last post

Perl-Users Digest, Issue: 9361 Volume: 10

daemon@ATHENA.MIT.EDU (Perl-Users Digest)
Fri Jun 23 18:10:17 2006

Date: Fri, 23 Jun 2006 15:10:09 -0700 (PDT)
From: Perl-Users Digest <Perl-Users-Request@ruby.OCE.ORST.EDU>
To: Perl-Users@ruby.OCE.ORST.EDU (Perl-Users Digest)

Perl-Users Digest           Fri, 23 Jun 2006     Volume: 10 Number: 9361

Today's topics:
        use binary operator on ascii text string Sean.Dewis@gmail.com
    Re: use binary operator on ascii text string krakle@visto.com
    Re: use binary operator on ascii text string <David.Squire@no.spam.from.here.au>
    Re: use binary operator on ascii text string <David.Squire@no.spam.from.here.au>
    Re: use binary operator on ascii text string <sherm@Sherm-Pendleys-Computer.local>
    Re: use binary operator on ascii text string <David.Squire@no.spam.from.here.au>
    Re: use binary operator on ascii text string <sherm@Sherm-Pendleys-Computer.local>
    Re: use binary operator on ascii text string <David.Squire@no.spam.from.here.au>
    Re: use binary operator on ascii text string <wahab@chemie.uni-halle.de>
    Re: use binary operator on ascii text string <sherm@Sherm-Pendleys-Computer.local>
    Re: use binary operator on ascii text string <mumia.w.18.spam+nospam.usenet@earthlink.net>
    Re: use binary operator on ascii text string <DJStunks@gmail.com>
    Re: What is a type error? <eliotm@pacbell.net>
    Re: What is a type error? <chris.uppal@metagnostic.REMOVE-THIS.org>
    Re: What is a type error? <dnew@san.rr.com>
    Re: What is a type error? <marshall.spight@gmail.com>
    Re: What is a type error? <cdsmith@twu.net>
        Digest Administrivia (Last modified: 6 Apr 01) (Perl-Users-Digest Admin)

----------------------------------------------------------------------

Date: 23 Jun 2006 11:08:47 -0700
From: Sean.Dewis@gmail.com
Subject: use binary operator on ascii text string
Message-Id: <1151086127.082856.49870@p79g2000cwp.googlegroups.com>

Hi everyone

I'm pretty crap at perl, so I'd appreciate so help from you guys.

I have a string value held in $body variable.

What I need to do is manipulate each individual character value in the
string with OR - "|" and then replace that character with the
character's new value.

I'm using chr(ord($c) | 64) to get the new value, but I'm stuck on two
things: -

1)   How to go through the string byte by byte and perform the OR 64 on
it
2)   How to get the character equivalent back into the string in the
right place

For example the string is "abcdefg", by (I know it's not true)
performing OR 64 on each char I want "fghijkl" out.

Any idea's?  Code examples would be appreciated.

TIA

Sean



------------------------------

Date: 23 Jun 2006 11:13:23 -0700
From: krakle@visto.com
Subject: Re: use binary operator on ascii text string
Message-Id: <1151086403.186760.278220@c74g2000cwc.googlegroups.com>


Sean.De...@gmail.com wrote:
> Hi everyone
>
> I'm pretty crap at perl,

And english :)

> Any idea's?  Code examples would be appreciated.
> 

http://www.perl.com

and

#!/usr/bin/perl -w
# ...



------------------------------

Date: Fri, 23 Jun 2006 19:27:27 +0100
From: David Squire <David.Squire@no.spam.from.here.au>
Subject: Re: use binary operator on ascii text string
Message-Id: <e7hbqg$155$1@news.ox.ac.uk>

Sean.Dewis@gmail.com wrote:
> Hi everyone
> 
> I'm pretty crap at perl, so I'd appreciate so help from you guys.
> 
> I have a string value held in $body variable.
> 
> What I need to do is manipulate each individual character value in the
> string with OR - "|" and then replace that character with the
> character's new value.
> 
> I'm using chr(ord($c) | 64) to get the new value, but I'm stuck on two
> things: -
> 
> 1)   How to go through the string byte by byte and perform the OR 64 on
> it
> 2)   How to get the character equivalent back into the string in the
> right place
> 
> For example the string is "abcdefg", by (I know it's not true)
> performing OR 64 on each char I want "fghijkl" out.

??? The characters in "abcdefg" already have bit 7 set on - as the must 
since ord('a') is 97 > 64 (at least in ASCII, and many derived encodings).
> 
> Any idea's?

Learn how to use apostrophes correctly, for a start :)

> Code examples would be appreciated.

Here's some code that does what I think you want, but as I have 
described above, that is not actually that clear. I bet that there are 
nicer ways to do this too, which others will most likely soon point out :)

----

#!/usr/bin/perl
use strict;
use warnings;

while (my $line = <DATA>) {
	chomp $line;
	my @line_array = split //, $line;
	my @new_line_array = map {$_ | chr(64)} @line_array;
	my $new_line = join '', @new_line_array;
	print "$new_line\n";
}


__DATA__
abcdefg
1234567687568
%^&*^*()&^)&^

----

Output:

abcdefg
qrstuvwvxwuvx
e^fj^jhif^if^


DS


------------------------------

Date: Fri, 23 Jun 2006 19:38:47 +0100
From: David Squire <David.Squire@no.spam.from.here.au>
Subject: Re: use binary operator on ascii text string
Message-Id: <e7hcfn$1ba$1@news.ox.ac.uk>

David Squire wrote:
> Sean.Dewis@gmail.com wrote:
>> Hi everyone
>>
>> I'm pretty crap at perl, so I'd appreciate so help from you guys.
>>
>> I have a string value held in $body variable.
>>
>> What I need to do is manipulate each individual character value in the
>> string with OR - "|" and then replace that character with the
>> character's new value.
>>
>> I'm using chr(ord($c) | 64) to get the new value, but I'm stuck on two
>> things: -
>>
>> 1)   How to go through the string byte by byte and perform the OR 64 on
>> it
>> 2)   How to get the character equivalent back into the string in the
>> right place

[snip]

> Here's some code that does what I think you want, but as I have 
> described above, that is not actually that clear. I bet that there are 
> nicer ways to do this too, which others will most likely soon point out :)

[snip]

 ... such as this, which explicitly deals with bytes, rather than hoping 
that that is what characters are in the default encoding:

----

#!/usr/bin/perl
use strict;
use warnings;

while (my $line = <DATA>) {
	chomp $line;
	my @line_array = unpack 'C*', $line;
	my @new_line_array = map {$_ | 64} @line_array;
	my $new_line = pack 'C*', @new_line_array;
	print "$new_line\n";
}

----

DS


------------------------------

Date: Fri, 23 Jun 2006 14:52:52 -0400
From: Sherm Pendley <sherm@Sherm-Pendleys-Computer.local>
Subject: Re: use binary operator on ascii text string
Message-Id: <m2mzc3aem3.fsf@Sherm-Pendleys-Computer.local>

David Squire <David.Squire@no.spam.from.here.au> writes:

> ??? The characters in "abcdefg" already have bit 7 set on - as the
> must since ord('a') is 97 > 64

??? The value of a bit is 2^position, starting at position 0.

2^7 = 128.

sherm--

-- 
Cocoa programming in Perl: http://camelbones.sourceforge.net
Hire me! My resume: http://www.dot-app.org


------------------------------

Date: Fri, 23 Jun 2006 19:57:21 +0100
From: David Squire <David.Squire@no.spam.from.here.au>
Subject: Re: use binary operator on ascii text string
Message-Id: <e7hdih$1m1$2@news.ox.ac.uk>

Sherm Pendley wrote:
> David Squire <David.Squire@no.spam.from.here.au> writes:
> 
>> ??? The characters in "abcdefg" already have bit 7 set on - as the
>> must since ord('a') is 97 > 64
> 
> ??? The value of a bit is 2^position, starting at position 0.
> 
> 2^7 = 128.

I started counting at 1. The OP stated that he was doing | 64, so the 
bit reffered to was clear in any case.

DS


------------------------------

Date: Fri, 23 Jun 2006 15:13:05 -0400
From: Sherm Pendley <sherm@Sherm-Pendleys-Computer.local>
Subject: Re: use binary operator on ascii text string
Message-Id: <m2fyhvadoe.fsf@Sherm-Pendleys-Computer.local>

David Squire <David.Squire@no.spam.from.here.au> writes:

> Sherm Pendley wrote:
>> David Squire <David.Squire@no.spam.from.here.au> writes:
>> 
>>> ??? The characters in "abcdefg" already have bit 7 set on - as the
>>> must since ord('a') is 97 > 64
>> ??? The value of a bit is 2^position, starting at position 0.
>> 2^7 = 128.
>
> I started counting at 1.

Yes, obviously - that's why I posted the correction. Beginning at one is
incorrect in any base-n notation, not just binary. For any value of n, the
value of position x as n^x. That only works when the positions are numbered
starting with zero.

It's not a matter of personal preference or opinion, it's part of the math-
ematical definition of base-n notation.

sherm--

-- 
Cocoa programming in Perl: http://camelbones.sourceforge.net
Hire me! My resume: http://www.dot-app.org


------------------------------

Date: Fri, 23 Jun 2006 20:22:52 +0100
From: David Squire <David.Squire@no.spam.from.here.au>
Subject: Re: use binary operator on ascii text string
Message-Id: <e7hf2c$26p$1@news.ox.ac.uk>

Sherm Pendley wrote:
> David Squire <David.Squire@no.spam.from.here.au> writes:
> 
>> Sherm Pendley wrote:
>>> David Squire <David.Squire@no.spam.from.here.au> writes:
>>>
>>>> ??? The characters in "abcdefg" already have bit 7 set on - as the
>>>> must since ord('a') is 97 > 64
>>> ??? The value of a bit is 2^position, starting at position 0.
>>> 2^7 = 128.
>> I started counting at 1.
> 
> Yes, obviously - that's why I posted the correction. Beginning at one is
> incorrect in any base-n notation, not just binary. For any value of n, the
> value of position x as n^x. That only works when the positions are numbered
> starting with zero.
> 
> It's not a matter of personal preference or opinion, it's part of the math-
> ematical definition of base-n notation.

And entirely unrelated to helping with the OP's question. I can just as 
easily say that the value at the nth position is x^(n-1), and then count 
1st, 2nd, 3rd, etc.

You have again snipped context that made it clear that there was no 
ambiguity in what I posted.

Choosing to start at 0 is indeed arbitrary - though of course you are 
right about the most common convention.


DS


------------------------------

Date: Fri, 23 Jun 2006 22:15:02 +0200
From: Mirco Wahab <wahab@chemie.uni-halle.de>
Subject: Re: use binary operator on ascii text string
Message-Id: <e7hibf$6b8$1@mlucom4.urz.uni-halle.de>

Thus spoke Sean.Dewis@gmail.com (on 2006-06-23 20:08):

> What I need to do is manipulate each individual character value in the
> string with OR - "|" and then replace that character with the
> character's new value.

Use something like the sequence split ==> map ==> join,
as in:
$ored = join '', map chr( ord | 64 ), split '', $body;

code example:

   #!/usr/bin/perl
   use strict;
   use warnings;

   my $body   = qq{This abcdefg is a really big chunk of abcdefg};
   my $num = 64;

   my $gtid = join '', map chr( ord | $num ), split '', $body;

   print $gtid, "\n";


Regards

Mirco



------------------------------

Date: Fri, 23 Jun 2006 16:24:28 -0400
From: Sherm Pendley <sherm@Sherm-Pendleys-Computer.local>
Subject: Re: use binary operator on ascii text string
Message-Id: <m2k677liwz.fsf@Sherm-Pendleys-Computer.local>

David Squire <David.Squire@no.spam.from.here.au> writes:

> And entirely unrelated to helping with the OP's question.

Sorry. I guess I didn't realize I was getting paid for working at this
help desk and therefore obligated to answer questions.

> I can just
> as easily say that the value at the nth position is x^(n-1), and then
> count 1st, 2nd, 3rd, etc.

The difference is that I'm talking about an established rule that's been
widely agreed upon for decades - and that's just within the realm of
computer science. You, on the other hand, are just making stuff up to
rationalize your mistakes.

> You have again snipped context that made it clear that there was no
> ambiguity in what I posted.

You're right - It was unambiguously wrong.

> Choosing to start at 0 is indeed arbitrary

arbitrary, adj:
    1. Determined by chance, whim, or impulse, and not by necessity, reason,
       or principle: stopped at the first motel we passed, an arbitrary
       choice.
    2. Based on or subject to individual judgment or preference: The diet
       imposes overall calorie limits, but daily menus are arbitrary.
    3. Established by a court or judge rather than by a specific law or
       statute: an arbitrary penalty.
    4. Not limited by law; despotic: the arbitrary rule of a dictator.

The original decision to start at zero was indeed arbitrary. But that was a
long time ago. One could just as easily argue that the use of the Arabic
numerals 1 and 0 are arbitrary.

Now it's an established convention, and following it is not subject to
individual judgment or preference, assuming of course that you expect to
be understood.

sherm--

-- 
Cocoa programming in Perl: http://camelbones.sourceforge.net
Hire me! My resume: http://www.dot-app.org


------------------------------

Date: Fri, 23 Jun 2006 20:52:39 GMT
From: "Mumia W." <mumia.w.18.spam+nospam.usenet@earthlink.net>
Subject: Re: use binary operator on ascii text string
Message-Id: <rwYmg.1352$ii.767@newsread3.news.pas.earthlink.net>

Sean.Dewis@gmail.com wrote:
> Hi everyone
> 
> I'm pretty crap at perl, so I'd appreciate so help from you guys.
> 
> I have a string value held in $body variable.
> 
> What I need to do is manipulate each individual character value in the
> string with OR - "|" and then replace that character with the
> character's new value.
> 
> I'm using chr(ord($c) | 64) to get the new value
> [...]

Then you're pretty much there. Just use the substitution operator to 
replace each character with the result of the code you have above, and 
you're almost set.

You'll also have to change $c to the match variable $&, and the 
substitution operator will need the 'g' option (global--go through the 
entire string) and the 'e' option (execute code).



------------------------------

Date: 23 Jun 2006 13:59:25 -0700
From: "DJ Stunks" <DJStunks@gmail.com>
Subject: Re: use binary operator on ascii text string
Message-Id: <1151096365.195876.110040@i40g2000cwc.googlegroups.com>


David Squire wrote:
> Sean.Dewis@gmail.com wrote:
> > <snip>
> > Any idea's?
>
> Learn how to use apostrophes correctly, for a start :)

hahaha.  a pet peeve of mine too.

http://www.angryflower.com/bobsqu.gif

-jp



------------------------------

Date: Fri, 23 Jun 2006 19:40:44 GMT
From: Eliot Miranda <eliotm@pacbell.net>
Subject: Re: What is a type error?
Message-Id: <0tXmg.28329$VE1.19407@newssvr14.news.prodigy.com>



Darren New wrote:

> Eliot Miranda wrote:
> 
>> can only actually carry-out operations on objects that implement them. 
> 
> 
> Execpt that every operation is implemented by every object in Smalltalk. 

No they are not.  Objects implement the methods defined by their class 
and (inherit) those implemented by the class's superclasses.  Note that 
classes do _not_ have to inherit from Object, and so one can create 
classes that implement no methods at all.  It is a common idiom to 
create a class that implements two methods, an initialization method and 
a doesNotUnderstand: method, so create a transparent proxy that 
intercepts any and all messages sent to it other than the initialization 
method (*).

[(*) With suitable hackery (since Smalltalk gives access to the 
execution stack through thisContext) one can also invoke 
doesNotUnderstand: if the initialization message is sent from any object 
other than the class.]

> Unless you specify otherwise, the implementation of every method is to 
> call the receiver with doesNotUnderstand.  (I don't recall whether the 
> class of nil has a special rule for this or whether it implements 
> doesNotUnderstand and invokes the appropriate "don't send messages to 
> nil" method.)

No.  The run-time error of trying to invoke an  operation that isn't 
implemented by an object is to send the doesNotUnderstand: message. 
This is another attempt to invoke an operation, i.e. whatever the 
object's doesNotUnderstand: method is, if any.  If the object doesn't 
implement doesNotUnderstand:, which is quite possible, then the system, 
will likely crash (either with an out of memory error as it goes into 
infinite recursion) or hang (looping attempting to find an 
implementation of doesNotUnderstand:).

> There are a number of Smalltalk extensions, such as 
> multiple-inheritance, that rely on implementing doesNotUnderstand.

Which has nothing to do with the separation between message send and 
method invocation, or the fact that doesNotUnderstand: is a message 
send, not a hard call of a given doesNotUnderstand: method.
-- 
_______________,,,^..^,,,____________________________
Eliot Miranda              Smalltalk - Scene not herd



------------------------------

Date: Fri, 23 Jun 2006 21:03:58 +0100
From: "Chris Uppal" <chris.uppal@metagnostic.REMOVE-THIS.org>
Subject: Re: What is a type error?
Message-Id: <449c4826$1$657$bed64819@news.gradwell.net>

Chris Smith wrote:

> But then, I
> dislike discussion of strong/weak type systems in the first place.  It
> doesn't make any sense to me to say that we verify something and then
> don't do anything if the verification fails.  In those cases, I'd just
> say that verification doesn't really exist or is incorrectly
> implemented.

Hmm, that seems to make what we are doing when we run some tests dependent on
what we do when we get the results.  If I run a type inference algorithm on
some of my Smalltalk code, and it tells me that something is type-incorrect,
then I think I'd like to be able to use the same words for the checking
regardless of whether, after due consideration, I decide to change my code, or
that it is OK as-is.  Minor point, though...

Anyway:

>     if (x != 0) y = 1 / x;
>     else y = 999999999;
>
> is not all that much different from (now restricting to Java):
>
>     try { y = 1 / x; }
>     catch (ArithmeticException e) { y = 999999999; }
>
> So is one of them a use of a dynamic type system, where the other is
> not?

My immediate thought is that the same question is equally applicable (and
equally interesting -- i.e. no simple answer ;-) for static typing.  Assuming
Java's current runtime semantics, but positing different type checkers,  we can
get several answers.

A] Trivial: neither involves the type system at all.  What we are seeing
is a runtime check (not type check) correctly applied, or made unnecessary by
conditional code.  And, obviously we can take the same line for the "dynamic
type checking" -- i.e. that no type checking is involved.

B] More interesting, we could extend Java's type system with a NotZero
numeric type (or rather, about half a dozen such), and decree that 1 / x was
only legal if
    x : NotZero
Under that type system, neither of the above would be type legal, assuming x is
declared int.  Or both would be legal if it was declared NotZero -- but in both
cases there'd be a provably unnecessary runtime check.  The nearest "dynamic
type system" equivalent would be quite happy with x : int.  For the first
example, the runtime checks would never fire (though they would execute).  For
the second the runtime "type" might come into play, and if it did, then the
assignment of 999999999 would take place /because/ the illegal operation (which
can be thought of as casting 0 to NotZero) had been replaced by a specific
legal one (throwing an ArithmeticException in this case).

C] A different approach would be to type the execution, instead of the value,
so we extend Java's type system so that:
    1 / x
had type (in part) <computation which can throw ArithmeticException>.  The
first example as a whole then would also have (in part) that type, and the
static type system would deem that illegal.  The second example, however, would
be type-legal.  I hope I don't seem to be fudging the issue, but I don't really
think this version has a natural "dynamic type system" equivalent -- what could
the checker check ?  It would see an attempt to throw an exception from a place
where that's not legal, but it wouldn't make a lot of sense to replace it with
an IllegalExceptionException ;-)

D] Another possibility would be a static type checker after the style of [B]
but extended so that it recognised the x != 0 guard as implicitly giving x :
NonZero.  In that case, again, the first example is static type-correct but the
second is not.  In this case the corresponding "dynamic type system" could, in
principle, avoid testing x for zero the second time.  I don't know whether that
would be worth the effort to implement.  In the second example, just as in
[B], the reason the program doesn't crash when x == 0 is that the "dynamic type
system" has required that the division be replaced with a throw.

One could go further (merge [B] and [C], or [C] and [D] perhaps), but I don't
think it adds much, and anyway I'm getting a bit bored....   (And also getting
sick of putting scare quotes around "dynamic type system" every time ;-)

Personally, of the above, I find [B] most appealing.

    -- chris




------------------------------

Date: Fri, 23 Jun 2006 20:00:13 GMT
From: Darren New <dnew@san.rr.com>
Subject: Re: What is a type error?
Message-Id: <hLXmg.3901$MF6.609@tornado.socal.rr.com>

Eliot Miranda wrote:
> classes do _not_ have to inherit from Object, 

I was unaware of this subtlety. Thanks!

-- 
   Darren New / San Diego, CA, USA (PST)
     Native Americans used every part
     of the buffalo, including the wings.


------------------------------

Date: 23 Jun 2006 13:29:34 -0700
From: "Marshall" <marshall.spight@gmail.com>
Subject: Re: What is a type error?
Message-Id: <1151094574.908557.86040@p79g2000cwp.googlegroups.com>

Chris Uppal wrote:
>  /Given/ a set of operations which I want to forbid,
> I would like to say that a "dynamic type system" which prevents them executing
> is doing very much the same job as a static type system which stops the code
> compiling.

There are similarities, (classifying values into categories, and
checking
whether functions are sensibly invoked according these categories)
and there are differences (in the difference between existential
quantification of success vs. universal quantification of success.)
They are certainly not identical. (I'm not sure if by "very much the
same" you meant identical or not.)


> Of course, we can talk about what kinds of operations we want to forbid, but
> that seems (to me) to be orthogonal to this discussion.   Indeed, the question
> of dynamic/static is largely irrelevant to a discussion of what operations we
> want to police, except insofar as certain checks might require information
> which isn't available to a (feasible) static theorem prover.

Sometimes the things you want to check are emergent properties
of a progam rather than local properties. I don't see how runtime
checks can do anything with these properties, at least not without
a formal framework. An example is deadlock freedom. There
exist type systems that can prove code free of deadlock or
race conditions. How woud you write a runtime check for that?


Marshall



------------------------------

Date: Fri, 23 Jun 2006 15:49:13 -0600
From: Chris Smith <cdsmith@twu.net>
Subject: Re: What is a type error?
Message-Id: <MPG.1f060fc6e91b10f89896ef@news.altopia.net>

Chris Uppal <chris.uppal@metagnostic.REMOVE-THIS.org> wrote:
> >     if (x != 0) y = 1 / x;
> >     else y = 999999999;
> >
> > is not all that much different from:
> >
> >     try { y = 1 / x; }
> >     catch (ArithmeticException e) { y = 999999999; }

> My immediate thought is that the same question is equally applicable (and
> equally interesting -- i.e. no simple answer ;-) for static typing.

I don't see that.  Perhaps I'm missing something.  If I were to define a 
type system for such a language that is vaguely Java-based but has 
NotZero as a type, it would basically implement your option [D], and 
contain the following rules:

1. NotZero is a subtype of Number
2. Zero is a subtype of Number

3. If x : Number and k : Zero, then "if (x != k) a else b" is well-typed 
iff "a" is well-typed when the type-environment is augmented with the 
proposition "x : NotZero" and "b" is well-typed when the type-
environment is augmented with the new proposition "x : Zero".

Yes, I know that Java doesn't do this right now in similar places (e.g., 
instanceof), and I don't know why not.  This kind of thing isn't even 
theoretically interesting at all, except that it makes the proof of 
type-soundness look different.  As far as I can see, it ought to be 
second-nature in developing a type system for a language.

In that case, the first example is well-typed, and also runs as 
expected.  The second bit of code is not well-typed, and thus 
constitutes a type error.  The way we recognize it as a type error, 
though, is in the fact that the compiler aborts while checking the 
typing relation, rather than because of the kind of problem prevented.  
Of course, it would be possible to build a static type system in which 
different things are true.  For example, Java itself is a system in 
which both terms are well-typed.

From a dynamic type perspective, the litany of possibilities doesn't 
really do much for defining a dynamic type system, which I thought was 
our goal in this bit of the thread.  I may not have been clear enough 
that I was look for an a priori grounds to classify these two cases by 
the definition.  I was assuming the existing behavior of Java, which 
says that both accomplish the same thing and react in the same way, yet 
intuitively we seem to think of one as a type error being "solved", 
whereas the other is not.

Anyway, you just wrote another message that is far closer to what I feel 
we ought to be thinking about than my question here... so I will get to 
reading that one, and perhaps we can take up this point later when and 
if it is appropriate.

-- 
Chris Smith - Lead Software Developer / Technical Trainer
MindIQ Corporation


------------------------------

Date: 6 Apr 2001 21:33:47 GMT (Last modified)
From: Perl-Users-Request@ruby.oce.orst.edu (Perl-Users-Digest Admin) 
Subject: Digest Administrivia (Last modified: 6 Apr 01)
Message-Id: <null>


Administrivia:

#The Perl-Users Digest is a retransmission of the USENET newsgroup
#comp.lang.perl.misc.  For subscription or unsubscription requests, send
#the single line:
#
#	subscribe perl-users
#or:
#	unsubscribe perl-users
#
#to almanac@ruby.oce.orst.edu.  

NOTE: due to the current flood of worm email banging on ruby, the smtp
server on ruby has been shut off until further notice. 

To submit articles to comp.lang.perl.announce, send your article to
clpa@perl.com.

#To request back copies (available for a week or so), send your request
#to almanac@ruby.oce.orst.edu with the command "send perl-users x.y",
#where x is the volume number and y is the issue number.

#For other requests pertaining to the digest, send mail to
#perl-users-request@ruby.oce.orst.edu. Do not waste your time or mine
#sending perl questions to the -request address, I don't have time to
#answer them even if I did know the answer.


------------------------------
End of Perl-Users Digest V10 Issue 9361
***************************************


home help back first fref pref prev next nref lref last post