[6753] in Perl-Users-Digest
Perl-Users Digest, Issue: 378 Volume: 8
daemon@ATHENA.MIT.EDU (Perl-Users Digest)
Sat Apr 26 17:17:18 1997
Date: Sat, 26 Apr 97 14:00:18 -0700
From: Perl-Users Digest <Perl-Users-Request@ruby.OCE.ORST.EDU>
To: Perl-Users@ruby.OCE.ORST.EDU (Perl-Users Digest)
Perl-Users Digest Sat, 26 Apr 1997 Volume: 8 Number: 378
Today's topics:
ANNOUNCE: Bit::Vector (Set::IntegerFast) 4.0 (Steffen Beyer)
ANNOUNCE: Data::Persistent up for adoption. (Eric M Knell)
Re: bootstrap? <rootbeer@teleport.com>
Re: Calling Tom Christiansen's ckaddr <rootbeer@teleport.com>
Re: display hostname in CGI perl script? <rootbeer@teleport.com>
Re: Getting E-Mail Address Thorugh CGI <rootbeer@teleport.com>
Re: Notice to antispammers (Terje Bless)
Re: Notice to antispammers (John Stanley)
Re: Please, help me! Perl-script. <rootbeer@teleport.com>
Re: Randal Teaching Open Perl Class in NYC/Northern NJ (Terje Bless)
Re: Randomly selecting lines of text? <rootbeer@teleport.com>
Re: Run UNIX commands <rootbeer@teleport.com>
Re: shells, system, and pipes <rootbeer@teleport.com>
Sx version 2.3 uploaded to CPAN (Frederic Chauveau)
Re: Troubles with IIS and ODBC <stevenc@istar.ca>
Re: undump revisited? (David Alan Black)
Digest Administrivia (Last modified: 8 Mar 97) (Perl-Users-Digest Admin)
----------------------------------------------------------------------
Date: 26 Apr 1997 20:36:23 GMT
From: sb@sdm.de (Steffen Beyer)
Subject: ANNOUNCE: Bit::Vector (Set::IntegerFast) 4.0
Message-Id: <5jtp07$esv$1@nadine.teleport.com>
I am glad and proud to submit
=====================================
Package "Bit::Vector" Version 4.0
=====================================
for Perl version 5.000 and higher
Copyright (c) 1995, 1996, 1997 by Steffen Beyer. All rights reserved.
This package is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.
to the Perl community.
=======================
A T T E N T I O N :
=======================
#########################################################################
## ##
## This distribution REPLACES the "Set::IntegerFast"-distribution!!! ##
## ================================================================= ##
## ##
#########################################################################
Contents of this message:
-------------------------
+ Where to find
+ Reasons for the change of the name of this distribution and module
+ Migration strategy
+ Prerequisites
+ What does it do
+ New features in version 4.0
+ This distribution contains
+ Erratum
Where to find:
--------------
You can download this module directly from the author's web site, where you
will also find my other modules and a couple of logos describing what the
modules do:
http://www.engelschall.com/u/sb/download/
You should also be able to find this module on any CPAN ftp site (CPAN =
"Comprehensive Perl Archive Network"), where the file "Bit-Vector-4.0.tar.gz"
should be found in any of the following directories:
.../CPAN/authors/id/STBEY/
.../CPAN/modules/by-category/06_Data_Type_Utilities/Bit/
.../CPAN/modules/by-module/Bit/
To find a CPAN ftp site, you can either direct your web browser to
http://www.perl.com/CPAN/modules/by-module/Bit/Bit-Vector-4.0.tar.gz
(which will automatically redirect you to a CPAN ftp server near you) or
look into "The Perl 5 Module List" by Tim Bunce and Andreas Koenig either
on USENET in the "comp.lang.perl.modules" newsgroup or at
http://www.perl.com/CPAN/modules/00modlist.long.html
Reasons for the change of the name of this distribution and module:
-------------------------------------------------------------------
Version 4.0 is a complete rewrite of the whole "Set::Integerfast" package,
during which a huge number of new methods have been added to this module
(see also below!), with also large additions to its associated application
modules.
The module has been renamed to "Bit::Vector" since it now not only offers
methods for the handling of sets, but also for other applications based
on bit vectors, like boolean matrices and shift registers.
Having multiple modules using C code via the XSUB interface in one
distribution (the "Set::IntegerFast" and the "Math::MatrixBool" modules)
made things prohibitively costly to maintain.
A third such module was on the verge to arrive, one to implement bit
shift registers of arbitrary length.
Instead of duplicating the basic code to create, handle and destroy
bit vectors (which would have been the same for all three modules!),
everything was assembled into one unique C library.
The name of "Set::IntegerFast" simply didn't fit this grown library
anymore, a more general name was needed.
"Bit::Vector" seems to be the most appropriate for it.
Migration strategy:
-------------------
You will need to apply the following changes to your existing
applications that use the "Set::IntegerFast" module (use
interactive global text search & replace for this):
"Set::IntegerFast" --> "Bit::Vector" (required)
"Empty_Interval(" --> "Interval_Empty(" (recommended)
"Fill_Interval(" --> "Interval_Fill(" (recommended)
"Flip_Interval(" --> "Interval_Flip(" (recommended)
"Delete(" --> "Bit_Off(" (recommended)
"Insert(" --> "Bit_On(" (recommended)
"flip(" --> "bit_flip(" (recommended)
"in(" --> "bit_test(" (recommended)
"in(" --> "contains(" (alternative)
"inclusion(" --> "subset(" (recommended)
You should also apply these very changes to all of your applications
using the "Set::IntegerRange" and the "Math::MatrixBool" module.
This is because the same changes as in the new "Bit::Vector" module
have also been applied to these two modules, including (some of) the
new methods and (all of) the new method names and aliases!
The old method names on the left of the table above are still supported,
but deprecated from now on (this means that they could disappear at some
day in the future).
The module "Set::IntegerFast" still exists, but it is maintained only to
assure backward compatibility. It might also go sometime in the future.
Therefore, it is strongly recommended that you migrate your application(s).
Prerequisites:
--------------
Perl version 5.000 or higher, a C compiler capable of the ANSI C standard (!)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
What does it do:
----------------
The base class of this distribution, "Bit::Vector", allows you to create bit
vectors and sets of arbitrary size (only limited by the size of a machine
word and available memory on your system) with indices (= elements) in the
range from zero to some positive integer, to dynamically change the size of
such bit vectors or sets and to perform a broad range of basic operations on
them, like
- adding or removing elements (setting and clearing single bits),
- testing the presence of a certain element (testing a single bit),
- setting or clearing contiguous ranges of bits,
- detecting contiguous ranges of set bits,
- copying bit vectors,
- converting a bit vector into either a compact (hexadecimal) or a
human-readable string representation (allowing you to store bit
vectors in a file, for instance),
- reading in the contents of a bit vector from a string,
- comparing two bit vectors for equality and lexical order,
- performing bitwise shift and rotation operations,
- computing the union, intersection, difference, symmetric difference
or complement of sets,
- testing two sets for equality or inclusion (subset relationship),
- computing the minimum, the maximum and the norm (number of elements)
of a set,
and more.
Note also that it is very easy to implement sets of arbitrary intervals of
integers using this module (negative indices are no obstacle), despite the
fact that only intervals of positive integers (from zero to some positive
integer) are supported directly.
Please refer to the "Set::IntegerRange" module (also contained in this
distribution) and its man page to see how this can be done!
The "Bit::Vector" module is mainly intended for mathematical or algorithmical
computations. There are also a number of efficient algorithms that rely on
sets (and bit vectors).
An example of such an efficient algorithm (which uses a different
representation for sets, however, not bit vectors) is Kruskal's
algorithm for minimal spanning trees in graphs.
(See the module "Graph::Kruskal" and its man page in this distribution.)
Another famous algorithm using bit vectors is the "Seave of Erathostenes"
for calculating prime numbers, which is included here as a demo program
(see the file "primes.pl" in this distribution).
An important field of application is the computation of "first", "follow"
and "look-ahead" character sets for the construction of LL, SLR, LR and LALR
parsers for compilers (or a compiler-compiler, like "yacc", for instance).
(That's what the C library in this package was initially written for.)
(See Aho, Hopcroft, Ullman, "The Design and Analysis of Computer Algorithms"
for an excellent book on efficient algorithms and the famous "Dragon Book"
on how to build compilers by Aho, Sethi, Ullman.)
Therefore, this module is primarily designed for efficiency, which is the
reason why most of its methods are implemented in C.
To increase execution speed, the module doesn't use bytes as its basic storage
unit, it rather uses machine words, assuming that a machine word is the most
efficiently handled size of all scalar types on any machine (that's what the
ANSI C standard proposes and assumes anyway).
In order to achieve this, it automatically determines the number of bits
in a machine word on your system and then adjusts its internal configuration
constants accordingly.
The greater the size of this basic storage unit, the better the complexity
(= execution speed) of the methods in this module (but also the greater the
average waste of unused bits in the last word).
Note that the C library of this package ("BitVector.c") is designed in such
a way that it can be used independently from Perl and this Perl extension
module. (!)
For this, you can use the file "BitVector.o" exactly as it is produced when
building this module! It contains no references to Perl, and it doesn't need
any Perl header files in order to compile. (It only needs "Definitions.h" and
some system header files.)
Note however that this C library does not perform any bounds checking
whatsoever! (This is your application's duty!)
(See the respective explanation in the file "BitVector.c" for more details
and the file "Vector.xs" for an example of how this can be done!)
In this module, all bounds and type checking (which should be absolutely
fool-proof, BTW!) is done in the XSUB routines (in C).
For more details about the modules in this distribution, please refer to
their respective man pages!
New features in version 4.0:
----------------------------
Flip
$vector->Flip();
Interval_Scan_inc
while (($min,$max) = $vector->Interval_Scan_inc($start))
Interval_Scan_dec
while (($min,$max) = $vector->Interval_Scan_dec($start))
rotate_left
$carry_out = $vector->rotate_left();
rotate_right
$carry_out = $vector->rotate_right();
shift_left
$carry_out = $vector->shift_left($carry_in);
shift_right
$carry_out = $vector->shift_right($carry_in);
to_String
$string = $vector->to_String(); # e.g., "A08A28AC"
from_string
$ok = $vector->from_string($string);
Multiplication
$matrix1->Multiplication($rows1,$cols1,
$matrix2,$rows2,$cols2,
$matrix3,$rows3,$cols3);
Closure
$matrix->Closure($rows,$cols);
Shadow
$other_vector = $some_vector->Shadow();
Clone
$twin_vector = $some_vector->Clone();
new_from_String
eval { $vector = Bit::Vector->new_from_String($string); };
to_ASCII
$string = $vector->to_ASCII(); # e.g., "2,3,5-7,11,13-19"
from_ASCII
eval { $vector->from_ASCII($string); };
Emptyness
if ($vector) # if not empty
if (! $vector) # if empty
unless ($vector) # if empty
# "$index" is a number or a Perl scalar variable containing a
# number which represents the set containing only that element:
Equality
if ($vector1 == $vector2)
if ($vector1 != $vector2)
if ($vector == $index)
if ($vector != $index)
Lexical Comparison
$cmp = $vector1 cmp $vector2;
if ($vector1 lt $vector2)
if ($vector1 le $vector2)
if ($vector1 gt $vector2)
if ($vector1 ge $vector2)
if ($vector1 eq $vector2)
if ($vector1 ne $vector2)
$cmp = $vector cmp $index;
if ($vector lt $index)
if ($vector le $index)
if ($vector gt $index)
if ($vector ge $index)
if ($vector eq $index)
if ($vector ne $index)
Shift Register
$carry_out = $vector << $carry_in;
$carry_out = $vector >> $carry_in;
$carry_out = $carry_in >> $vector;
$vector <<= $carry_in;
$vector >>= $carry_in;
Rotate Register
$carry_out = $vector << $vector->bit_test($vector->Size()-1);
$carry_out = $vector >> $vector->bit_test(0);
$carry_out = $vector->bit_test(0) >> $vector;
$vector <<= $vector->bit_test($vector->Size()-1);
$vector >>= $vector->bit_test(0);
String Conversion
$string = "$vector";
print "\$vector = '$vector'\n";
Union
$set1 = $set2 + $set3;
$set1 += $set2;
$set1 = $set2 | $set3;
$set1 |= $set2;
$vector1 = $vector2 + $index;
$vector += $index;
$vector1 = $vector2 | $index;
$vector |= $index;
Intersection
$set1 = $set2 * $set3;
$set1 *= $set2;
$set1 = $set2 & $set3;
$set1 &= $set2;
$vector1 = $vector2 * $index;
$vector *= $index;
$vector1 = $vector2 & $index;
$vector &= $index;
Difference
$set1 = $set2 - $set3;
$set1 -= $set2;
$set1 = $set2 - $set1;
$vector1 = $vector2 - $index;
$vector1 = $index - $vector2;
$vector -= $index;
ExclusiveOr
$set1 = $set2 ^ $set3;
$set1 ^= $set2;
$vector1 = $vector2 ^ $index;
$vector ^= $index;
Complement
$set1 = -$set2;
$set1 = ~$set2;
$set = -$set;
$set = ~$set;
Subset Relationship
if ($set1 <= $set2)
True Subset Relationship
if ($set1 < $set2)
Superset Relationship
if ($set1 >= $set2)
True Superset Relationship
if ($set1 > $set2)
Norm
$norm = abs($set);
This distribution contains:
---------------------------
* a "BitVector" C library (can be used stand-alone!)
(files "Definitions.h" and "BitVector.c")
+ efficient (fast) handling of bit vectors and sets of
integers (and more)
+ determines the size of a machine word on your system
and automatically configures itself accordingly for
maximum speed of execution
* a "Bit::Vector" base class
(files "Vector.pm", "Vector.xs", "typemap", "BitVector.h",
"Definitions.h" and "BitVector.c")
+ efficient (fast) object-oriented methods for handling
bit vectors and sets of integers (intervals from zero
to some positive integer)
+ methods for converting bit vectors in strings and
vice-versa (supports "newsrc" style sets)
+ overloaded arithmetic and relational operators for
maximum comfort
* a "Set::IntegerFast" wrapper module
(file "lib/Set/IntegerFast.pm")
+ assures backward compatibility to previous versions
* a "Set::IntegerRange" application module
(file "lib/Set/IntegerRange.pm")
+ object-oriented methods for handling sets of integers
(arbitrary intervals)
+ overloaded arithmetic and relational operators for
maximum comfort
+ methods for converting sets in strings and
vice-versa
* a "Math::MatrixBool" application module
(file "lib/Math/MatrixBool.pm")
+ object-oriented methods for handling matrices of booleans
(Boolean Algebra)
+ overloaded arithmetic and relational operators for
maximum comfort
+ computes reflexive transitive closure using Kleene's
algorithm (essential for solving path-problem in graphs)
+ methods for converting matrices in strings and
vice-versa
+ matrix multiplication and closure are actually carried out
in the "Bit::Vector" module for maximum speed of execution
Related modules (NOT derived from the "Bit::Vector" base class):
* "Math::MatrixReal"
(file "lib/Math/MatrixReal.pm")
+ object-oriented methods for handling matrices of reals
+ overloaded arithmetic and relational operators for
maximum comfort
+ allows to solve linear equation systems using an
efficient algorithm known as "LR decomposition"
and several approximative (iterative) methods
+ features an implementation of Kleene's algorithm to
compute the minimal costs for all paths in a graph
with weighted edges
+ methods for converting matrices in strings and
vice-versa
* "DFA::Kleene"
(file "lib/DFA/Kleene.pm")
+ another implementation of Kleene's algorithm to compute
the language accepted by a Deterministic Finite Automaton
* "Math::Kleene"
(file "lib/Math/Kleene.pod")
+ a man page giving a brief introduction into the theory
behind Kleene's algorithm
* "Graph::Kruskal"
(file "lib/Graph/Kruskal.pm")
+ implementation of Kruskal's efficient algorithm
for Minimal Spanning Trees in graphs O( n * ld(n) )
+ example of an efficient algorithm relying heavily on sets
(with a different representation, though, not bit vectors)
Erratum:
--------
In the file "CHANGES" in the "Bit::Vector" distribution in section
"Migration strategy" is an error:
Instead of
"Delete(" --> "Bit_On(" (recommended)
"Insert(" --> "Bit_Off(" (recommended)
it should of course read
"Delete(" --> "Bit_Off(" (recommended)
"Insert(" --> "Bit_On(" (recommended)
Please excuse this lapse!
Thank you!
-----------------------------------------------------------------------------
I hope you will find this module benefitful!
Yours,
--
Steffen Beyer <sb@sdm.de> http://www.engelschall.com/u/sb/
"There is enough for the need of everyone in this world,
but not for the greed of everyone." - Mahatma Gandhi
------------------------------
Date: 26 Apr 1997 20:35:48 GMT
From: void!knell@uunet.uu.net (Eric M Knell)
Subject: ANNOUNCE: Data::Persistent up for adoption.
Message-Id: <5jtov4$esq$1@nadine.teleport.com>
Hello,
I was developing an interface for Persistent Objects in Perl, and a module
that used this to implement a Persistent Collection of objects. Due to a
change in direction, I have finished my work on this project, but there is
still much to be done. I am asking anyone who is interested to adopt this
project and bring Object Persistence to Perl 5.
There are a few modules included in this package:
Data::Persistent - An interface for persistency in Perl 5. Pretty
basic, but a good enough starting point for implementing persistency.
Data::Persistent::PFSDS - The Persistent Filesystem-based Datastore. An
implemementation of Data::Persistent that uses the POSIX filesystem to
implement Persistence and file-locking.
Data::Persistent::Component and Data::Persistent::Collection - A class for
the persistent storage of collections of persistent and non-persistent
components. Allows for the implicit persistency and storage of components.
This software is not supported by NCSA, and we have ceased work on it, but
the work might be valuable to you if you are doing work related to this.
We would like someone to adopt this project. If you have any questions,
please email me.
I, and NCSA, have finished our work on this module and release it to the
public unfinished and unsupported at:
ftp union.ncsa.uiuc.edu /pub/Data-Persistent-0.10.tar.gz
Please adopt this project (or use it as is) if you are interested.
Also, please read the README and README.Persistent files that are included.
Comments are welcome.
Eric Knell
knell@ncsa.uiuc.edu
------------------------------
Date: Sat, 26 Apr 1997 12:57:36 -0700
From: Tom Phoenix <rootbeer@teleport.com>
To: George Sarlas <gsarlas@foobar.res-hall.nwu.edu>
Subject: Re: bootstrap?
Message-Id: <Pine.GSO.3.96.970426125649.22309M-100000@kelly.teleport.com>
On Thu, 24 Apr 1997, George Sarlas wrote:
> I've just started playing with modules and perl5. More specifically, I'm
> trying to get some scripts that use dbm files to work, but they keep
> barfing on one specific line in the module GDBM_File:
>
> bootstrap GDBM_File $VERSION;
Sounds like the dynamic loading was mis-configured when your copy of Perl
was compiled. Try building it again, and make sure it passes all of the
tests in 'make test'. Good luck!
-- Tom Phoenix http://www.teleport.com/~rootbeer/
rootbeer@teleport.com PGP Skribu al mi per Esperanto!
Randal Schwartz Case: http://www.lightlink.com/fors/
------------------------------
Date: Sat, 26 Apr 1997 12:56:02 -0700
From: Tom Phoenix <rootbeer@teleport.com>
To: Neil Edmondson <neiled@enteract.com>
Subject: Re: Calling Tom Christiansen's ckaddr
Message-Id: <Pine.GSO.3.96.970426125023.22309L-100000@kelly.teleport.com>
On 25 Apr 1997, Neil Edmondson wrote:
> Maybe I'm barking up the wrong tree, but I'm trying to call this using
> something like:
>
> system ("./ckaddr.pl", "bad@bad.com");
>
> Trouble is it never gets executed.
You know that you need to backwhack the @ sign in those quotes, right?
Just before that system command, can you put in these sanity checks?
die "Can't find ./ckaddr.pl" unless -f './ckaddr.pl';
die "Can't execute ./ckaddr.pl" unless -x './ckaddr.pl';
If those don't find anything, maybe that command is executing, but doing
something you don't know about. Or, maybe there's something wrong with
your Perl or your system; have you tried the test suite which comes with
Perl?
Hope this helps!
-- Tom Phoenix http://www.teleport.com/~rootbeer/
rootbeer@teleport.com PGP Skribu al mi per Esperanto!
Randal Schwartz Case: http://www.lightlink.com/fors/
------------------------------
Date: Sat, 26 Apr 1997 12:34:46 -0700
From: Tom Phoenix <rootbeer@teleport.com>
To: Scott Yanoff <syanoff@strong-funds.com>
Subject: Re: display hostname in CGI perl script?
Message-Id: <Pine.GSO.3.96.970426123315.22309H-100000@kelly.teleport.com>
On Thu, 24 Apr 1997, Scott Yanoff wrote:
> I can get a CGI PERL script to show my hostname as 'user-0502'.
> However, I have accessed Java applets that show me as my alias (I think
> that is what it is) at 'syanoff_ws'
>
> Any idea how to get PERL to show that other hostname? I am using
> gethostbyaddr but it returns the 'user-0502' name.
Well, the first step is to find out where the other name is coming from.
Then you might have a chance of doing the same sort of thing in Perl. Good
luck!
-- Tom Phoenix http://www.teleport.com/~rootbeer/
rootbeer@teleport.com PGP Skribu al mi per Esperanto!
Randal Schwartz Case: http://www.lightlink.com/fors/
------------------------------
Date: Sat, 26 Apr 1997 12:32:46 -0700
From: Tom Phoenix <rootbeer@teleport.com>
To: Anil Gupta <anil@inta.net.au>
Subject: Re: Getting E-Mail Address Thorugh CGI
Message-Id: <Pine.GSO.3.96.970426122929.22309G-100000@kelly.teleport.com>
On Fri, 25 Apr 1997, Anil Gupta wrote:
> I was wondering, whether it is possible to get someone's E-Mail address
> without them having to give it to you?
Sure. Read it off of their business card. Get their friends to tell you.
Ask their secretary, mother, and sweetheart. Send e-mail to random
addresses until you reach them. :-)
> Maybe somehow in Perl thorugh CGi?
Other than implementing a method like one of the above, no. And that's not
Perl's shortcoming; unless they give you their e-mail address (or their
browser does) you're not going to get it through a CGI script, whether
it's written in Perl or something else.
Hope this helps!
-- Tom Phoenix http://www.teleport.com/~rootbeer/
rootbeer@teleport.com PGP Skribu al mi per Esperanto!
Randal Schwartz Case: http://www.lightlink.com/fors/
------------------------------
Date: Sat, 26 Apr 1997 20:23:36 +0200
From: link@tss.no (Terje Bless)
Subject: Re: Notice to antispammers
Message-Id: <link-YANW250b4-2604972023360001@news.uit.no>
In article <AF87C3C09668B3C3F@albooth.demon.co.uk>,
ab_news@albooth.demon.co.uk (Andrew Booth) wrote:
>How on earth is this legislative solution going to work?
I imagine much the same as the law agains junk faxing does.
>It doesn't take much intelligence to grep through newsgroups for email
>addresses, then feed this into a mail program to spam people.
It doesn't take much inetligence to hit little-old-ladies over the head
with a crowbar either. That doesn't mean we should let them get away with
it.
>going to be stuck with these idiots for the forseeable future - if you
>lock one person up for this, we will still have new spammers coming online
>who 'don't know better' or just think that they can get away with it.
No, no. Don't lock `em up. Hit `em where it *really* hurts.
Some humongous fines for the first few times they do it and then call them
repeat offenders and send the to San Quentin.
>As for a legal solution:
>a/ 90% or more of the spam I recieve is from the US - and I live in
> the UK (why do these people bother sending me 'reduce IRS payments'
> spam when I don't pay the IRS a penny?).
They send the spam outside of the US because people who are stupid enough
to buy into this, are stupid enough to not understand the difference.
>How am I to prosecute someone outside the reach of my local courts?
You inform local law enforcement who has some kind of an international
convention (Berne etc. etc.) which allows them to inform the junk mailers
local law enforcement etc. That's up to the suits to figure out. We just
gotta get them to start working on it.
>b/ If you kill spamming in the US, the spammers will move abroad - and
> we're not going to get 100% international cooperation on this.
No we aren't. All junk mailers will move to country X which aren't down
with the anti-UCE treaty. People figure this out and start killing all
email from spammer@domain.X. The authorities are pressured from interests
within country X to make some laws against this. => The junk mailers are on
the move again.
>c/ A lot of the spam I recieve at the moment is for Ponzi schemes which
> are allready illegal
Yeah, and drug trafficking is still going stron despite efforts to stop it.
You can't just stick your head in the sand and hope the problem goes away.
You have to keep trying to find a solution.
>Tom, I suggest you chill out a bit. You are clearly irritated by having
>false addresses cause email to be bounced back at you,
An he's not the opnly one. For a while I got more bounce messages than
actual junk mail. At the very *leat* lobby your ISP for a throwaway account
that you can use in place of the munged header.
>but I suggest that incitement to flame or spam these people is more against
>nettiquette than the original action of providing a false address.
Who said anything about "incitement to flame or spam"?
He said "here's what I'm going to do". I fully sympathise with him; even if
I would just not reply to people with munged headers. (With the
contributions Tom makes that should be incentive enough on it's own to not
munge your address ;D)
I usually keep my mouth shut if it's a discussion, but if someone posts a
question with a munged From header I tend to get pissy. First you ask me to
jump thru4 hoops trying to figure out the answer to your question, often
writing code for you in the process, for free and then inform me that I
have to jump thru4 even more hoops to gigure out how to get the answer to
you? That's arrogant and inconsiderate and against not only netiquette, but
also common curtesy.
>I really don't think it's unreasonable to want to take part in discussions
>without having your family email address bombarded with 'cyberporn' spam.
It isn't unreasonable. It's just that a munged email address is the *wrong*
way to attempt to solve the problem. All you achieve is to make it harder
for the folks who are actually trying to help you.
>If I sent a letter to a newspaper voicing an opinion on a subject, I really
>wouldn't expect them to give my address out to enable any nutter out there to
>personally mail me.
The reason they do that isn't so nutcases can't mail you, but that they
don't want nutcases showing up on your door and beat you up when you say
something they don't agree with. It's not so annoying sales people won't
come by and try to sell you a chain letter.
>I would accept criticism of my point of view, but via the forum of the
>newspaper letter page - the forum in which I had initially decided to talk.
In the most common case on groups like c.l.p.misc; the reply by email is
for your benefit (assuming you posted a question) and the followup is for
the benefit of other readers of the group. It also serves the purpose of
informing you that there in fact *is* a followup to you message.
>I'm writing to news because I want to take part in a discussion with other
>people. If I wanted to talk offline then I would use email. If I want to
>discuss, I'll use news, and I don't really want to download the same reply
>twice from someone.
In a discussion thread I'll agree that CCs are unecessary; there's no
shortage of opinionated commentary on USENET (which is why you don't get a
CC of this message ;D). I think CCs serve their purpose if used properly. I
do *not* believe that munged headers have their place.
If I know that your ISP prohibits forged headers in ther Terms of Service I
*will* complain to them if you do munge your headers. You munge your
headers to avopid UCE, and manage to inconvenience me in the process, I
complain to your ISP and may conceivably cost you the account (tho I
seriously doubt any self respecting ISP would do anything but, at /most/,
asking why you munged the headers).
Nothing personal, you see. I'm just trying to protect myself from all the
MAILER-DAEMON messages I recieve from the UBMers (Unsolicited Bounce
Messagers).
--
Party? Party, lord? Yes, lord. Right away, lord.
- Beopunk Cyberwulf
------------------------------
Date: 26 Apr 1997 20:53:39 GMT
From: stanley@skyking.OCE.ORST.EDU (John Stanley)
Subject: Re: Notice to antispammers
Message-Id: <5jtq0j$1o2@news.orst.edu>
This has lost its perl relevance. Followups set.
In article <link-YANW250b4-2604972023360001@news.uit.no>,
Terje Bless <link@tss.no> wrote:
>In article <AF87C3C09668B3C3F@albooth.demon.co.uk>,
> ab_news@albooth.demon.co.uk (Andrew Booth) wrote:
>
>>How on earth is this legislative solution going to work?
>
>I imagine much the same as the law agains junk faxing does.
As much as people want them to be the same, they aren't. If an effective
anti-spam law is enacted in the US, the spammers will just move outside
the US. They don't even have to move physically, just get net access.
It takes an international long distance call to send a junk fax from
outside the US to someone here, but just a few keystrokes to send junk
mail.
>It doesn't take much inetligence to hit little-old-ladies over the head
>with a crowbar either. That doesn't mean we should let them get away with
>it.
Sheesh. Nobody is saying that we should let them get away with anything.
What we are sayng is that handing the spammers a list of validated
addresses is not the solution. Complaining about people who are using
one way of protecting themselves is not the solution, either. Would
you complain about a little old lady who takes the taxi, because she
wasn't making herself available for the crime and thus nobody could be
arrested?
>He said "here's what I'm going to do". I fully sympathise with him; even if
>I would just not reply to people with munged headers. (With the
>contributions Tom makes that should be incentive enough on it's own to not
>munge your address ;D)
I appreciate Tom's contribution to this group as much as anyone else.
I would sympathize with him too, except for two small details.
First, all it takes to stop getting mail bounces from "courtesy copies"
is to stop sending them. It shouldn't be a hard thing to understand that
someone who has access to the group to post an article might also have
access to the group to read replies, and if he doesn't, he shouldn't be
benefitting from the replies.
Second, he is practicing what he tells us should be stopped. He has
complained to my postmaster that my mail filter bounced his "courtesy
copy" of a USENET article sent to me, but his mail filters bounce
replies to him. Even though his filter has bounced replies explaining
why bouncing junk mail is more effective than processing it locally, he
has sent me email from his bouncing address telling me I should not
bounce email, I should accept it all and then throw it away. (The reply
explaining why bouncing works was, of course, bounced and not simply
dropped.)
So, I will ask, in the only medium that Tom seems willing to read,
Why does he feel that he has a right to run a mail filter that bounces
mail but others do not?
>I usually keep my mouth shut if it's a discussion, but if someone posts a
>question with a munged From header I tend to get pissy.
How about someone who posts from an address that is filtered? Do you
object to people using filtered email?
How about people who continue to send you mail while they bounce replies
you send them? Do you "get pissy" about that?
> That's arrogant and inconsiderate and against not only netiquette, but
>also common curtesy.
So is dumping copies of USENET articles into other people's mailboxes
unbidden.
>It isn't unreasonable. It's just that a munged email address is the *wrong*
>way to attempt to solve the problem. All you achieve is to make it harder
>for the folks who are actually trying to help you.
Using a munged From header neither increases nor decreases the
difficulty of posting a reply. It does increase significantly the
difficulty of a spammer getting junk mail to you. Tom wants that
difficulty removed. Tom demands that none of his mail bounce, but
happily bounces mail sent to him. You figure it out.
>In the most common case on groups like c.l.p.misc; the reply by email is
>for your benefit (assuming you posted a question) and the followup is for
>the benefit of other readers of the group. It also serves the purpose of
>informing you that there in fact *is* a followup to you message.
A fact that you will realize the next time you read the group. Why
would an otherwise intelligent person think that the person who asked
the question will get no benefit from a reply that is posted to the
group? Won't he get the same benefit as from your email copy?
>If I know that your ISP prohibits forged headers in ther Terms of Service I
>*will* complain to them if you do munge your headers. You munge your
>headers to avopid UCE, and manage to inconvenience me in the process, I
...
>Nothing personal, you see. I'm just trying to protect myself from all the
>MAILER-DAEMON messages I recieve from the UBMers (Unsolicited Bounce
>Messagers).
Yes it is personal. You don't want to stop sending email to people who
indicate that they don't want it, so you will happily try to get their
account yanked.
The reason that people mung their From address is to indicate that they
do not want email. If you are getting such a large percentage of people
indicating to you that they do not want courtesy copies of USENET
articles, that might be a hint that the consensus is that such copies
aren't viewed as a courtesy anymore, if they ever were.
------------------------------
Date: Sat, 26 Apr 1997 12:59:38 -0700
From: Tom Phoenix <rootbeer@teleport.com>
To: Kristian Holm <kristiah@stud.idb.hist.no>
Subject: Re: Please, help me! Perl-script.
Message-Id: <Pine.GSO.3.96.970426125817.22309N-100000@kelly.teleport.com>
On Fri, 25 Apr 1997, Kristian Holm wrote:
> I'd need a script that can create a html document which contains:
> - a summary of all html documents in a specific catalogue structure.
> - when each document where last updated.
>
> The beauty of this task, is that the last updated information, has to be
> created by means of the script, checking each page in the structure
> against an older copy of it.
>
> Help would be greatly appreciated.
I'd recommend that you write it in Perl. To learn Perl, start with a good
book such as the famous Llama book. Your Perl documentation should have
the perlbook(1) manpage, which will tell you more about it. With that
book, writing your script should be pretty easy.
Hope this helps!
-- Tom Phoenix http://www.teleport.com/~rootbeer/
rootbeer@teleport.com PGP Skribu al mi per Esperanto!
Randal Schwartz Case: http://www.lightlink.com/fors/
------------------------------
Date: Sat, 26 Apr 1997 20:26:05 +0200
From: link@tss.no (Terje Bless)
Subject: Re: Randal Teaching Open Perl Class in NYC/Northern NJ AREA
Message-Id: <link-YANW250b4-2604972026050001@news.uit.no>
In article <uowiv1afmeu.fsf@tremere.ecte.uswc.uswest.com>, rjray@uswest.com
wrote:
>Tom Christiansen <tchrist@mox.perl.com> writes:
>>
>>Your newsreader is broken.
>>
>>>Content-Type: text/html; charset=iso-8859-1; name="perl_class.html"
>
>Tom, I believe you may have meant to say:
>
>"Your web-browser-masquerading-as-a-newsreader is broken."
The very reason why I kill on X-Mailer: Mozilla in c.l.p.*. :-(
--
Party? Party, lord? Yes, lord. Right away, lord.
- Beopunk Cyberwulf
------------------------------
Date: Sat, 26 Apr 1997 12:18:45 -0700
From: Tom Phoenix <rootbeer@teleport.com>
To: Ted Pedersen <pedersen@seas.smu.edu>
Subject: Re: Randomly selecting lines of text?
Message-Id: <Pine.GSO.3.96.970426121814.22309B-100000@kelly.teleport.com>
On 24 Apr 1997, Ted Pedersen wrote:
> Doe anyone have a Perl program that will randomly select (without
> repetition!) a given number of lines from a text file?
Knuth has a good algorithm that should be easy to put into Perl. Hope this
helps!
-- Tom Phoenix http://www.teleport.com/~rootbeer/
rootbeer@teleport.com PGP Skribu al mi per Esperanto!
Randal Schwartz Case: http://www.lightlink.com/fors/
------------------------------
Date: Sat, 26 Apr 1997 12:28:52 -0700
From: Tom Phoenix <rootbeer@teleport.com>
To: William Krige <9435697@mail.petech.ac.za>
Subject: Re: Run UNIX commands
Message-Id: <Pine.GSO.3.96.970426122621.22309E-100000@kelly.teleport.com>
On Fri, 25 Apr 1997, William Krige wrote:
> I was wondering if it is possible to run a command with a perl script,
> just like you would normally do with UNIX.
Yes, at least if you're using a Unix system. :-) If you're using some
other system, different commands may be available, of course. Look for the
documentation of backticks, system, fork, and exec in the Perl manpages.
> I am trying to manipulate the log files by using perl scripts through a
> web browser. I would like to know if it is possible or not.
Yep, it's possible. And you don't even have to use other processes; you
can do it all within Perl.
> Could someone maybe send me some example perl code for the above
> examples if possible.
$result = `rm -rf /my/log/files*`;
:-)
Hope this helps!
-- Tom Phoenix http://www.teleport.com/~rootbeer/
rootbeer@teleport.com PGP Skribu al mi per Esperanto!
Randal Schwartz Case: http://www.lightlink.com/fors/
------------------------------
Date: Sat, 26 Apr 1997 12:47:55 -0700
From: Tom Phoenix <rootbeer@teleport.com>
To: Bruce Bromberek <bromberek@cems.umn.edu>
Subject: Re: shells, system, and pipes
Message-Id: <Pine.GSO.3.96.970426123704.22309K-100000@kelly.teleport.com>
On Thu, 24 Apr 1997, Bruce Bromberek wrote:
> So then I thought, Ahha! I will deal with these commands in a subroutine
> and not return until I've read the the result of the command like
>
> sub stagecmds{
> print "in the loop from hell\n";
> open(CMDS, "stage -a 1000 1000 |");
> c$ = join('',<CMDS>);
> # code to check contents of c$
> close CMDS;
> }
>
> But this dies because the stage command with options does not like |
The stage command isn't seeing the vertical bar; that's always processed
by either Perl or /bin/sh before stage gets called. (In this case, it
should be processed by Perl, since you don't have any other shell
metacharacters.)
> So what I need (I guess) is a way to get the output of a command into
> perl without using the above contruction.
Maybe. From your description of the stage command, there's no way to tell
when the machinery is ready for the next command, but if your commands are
too close together, your task fails. Is that right? Your only hope in that
case is to find some way to tell that the machine must be ready, even if
you have to ask your user. :-(
Good luck with your project!
-- Tom Phoenix http://www.teleport.com/~rootbeer/
rootbeer@teleport.com PGP Skribu al mi per Esperanto!
Randal Schwartz Case: http://www.lightlink.com/fors/
------------------------------
Date: 26 Apr 1997 20:38:04 GMT
From: fmc@pasteur.fr (Frederic Chauveau)
Subject: Sx version 2.3 uploaded to CPAN
Message-Id: <5jtp3c$etd$1@nadine.teleport.com>
The new version of the Sx module is now available on CPAN. Sx is a
package which hugely simplify the writing of X application using
standard Athena widgets.
=======================
Changes for version 2.3
=======================
- Callbacks can now be specified either as the name of the callback function
or as a reference to it.
- All widgets can be independently named to allow finer tuning through
ressource file.
- Fixed a bug in the DrawArc and DrawFilledArc functions.
- Fixed a bug in Sx.pm.
- Cleaned up the callback code.
- Cleaned up the documentation file.
Incompatible changes with previous versions :
- Added prototype to the xsub functions. In particular, be careful that
ShowDisplay;
and
&ShowDisplay;
are entirely different. The second form is equivalent to ShowDisplay(@_)
which will fail if @_ isn't empty.
- All scalar variables have been replaced by equivalent constant sub. So
instead of using $Sx::PLACE_UNDER, you should now use PLACE_UNDER.
- The $data arguments for the MakeXXX function used to be optional. It is
now mandatory. Use undef if you don't need it.
- XtDestroyWidget and XWarpPointer have been renamed DestroyWidget and
WarpPointer.
All bug reports should be sent to fmc@pasteur.fr
------------------------------
Date: 26 Apr 1997 20:06:15 GMT
From: Steven Cruz <stevenc@istar.ca>
Subject: Re: Troubles with IIS and ODBC
Message-Id: <5jtn7n$i1b@news.istar.ca>
Gordon Andrew Ross wrote:
>
> Hello,
>
> We've recently reinstalled NT 4.0 on our web server, and have run into some
> difficulties. We're using Perl 5.001, Build 110, along with ODBC.pm. This
> has worked flawlessly in the past, but something happened during the
> reinstall. Here's our error message:
>
> HTTP/1.0 200 OK
> Server: Microsoft-IIS/2.0
> Date: Tue, 22 Apr 1997 21:38:48 GMT
> Content-Type: application/octet-stream
> Can't load 'C:\Perl5\lib/auto/Win32/ODBC/ODBC.pll' for module Win32::ODBC:
> 5 at
> C:\Perl5\lib/DynaLoader.pm line 450.
>
> at C:\Perl5\lib/Win32/ODBC.pm line 887
> BEGIN failed--compilation aborted at C:\Perl5\lib/KA/Administrator.pm line
> 67.
> Connection closed by foreign host.
Hello
TYry moving ODBC.pll in to the same dir that is perl.exe is running
from. Then check the premsions for the web user on that dll
8-)
------------------------------
Date: 26 Apr 1997 20:38:38 GMT
From: dblack@icarus.shu.edu (David Alan Black)
Subject: Re: undump revisited?
Message-Id: <5jtp4e$95c@pirate.shu.edu>
Roger Smith <rsmith@proteus.arc.nasa.gov> writes:
>UNCLE!!!!
>OK, I holler uncle! Much thanks to the many people who took the time to
>respond to my post. Amlost every response commented on my use of the
>embedded password issue as an example and so I stand corrected that it
>was a bad example to use. I do have passwords in the code but they are
>not unix login passwords... Also, I am very aware of 'strings' and
>'ptrace' and all the other unix utilities and options for cracking into
>binary code.
>I am still left with the issue of how to distribute this code to many
>unix platforms, and I cant believe that my problem is unique in the
>perl/unix world. So here is a more detailed statement of the issue for
>those of you that are interested.
>About a year ago we wrote a fairly simple client/server model in perl.
>The client package gathers statistical information from each client
>host, cpu type, memory, disk, etc., and the server collects this
>information and stores it in a sybase database. This data is required by
>our parent organization for asset management. Perl was originally chosen
Disclaimer: I'm a babe - well, pre-adolescent - in the woods when it
comes to security issues of this scope. Still, "Out of the mouths of
pre-adolescents..." :-)
It sounds like the real security issue is the sending of data from the
clients to the server. Assuming that this were [as] secure [as such
things get] (e.g., some kind of public/private key mechanism), and that
passwords/privileges were established after the code was already
installed (rather than included in the code being shipped), would it
really matter whether the source code was secure or not? Unless the
"etc." in that last paragraph includes something other than system usage
stats? Or is this more an intellectual property concern than a data
security concern?
David Black
dblack@icarus.shu.edu
------------------------------
Date: 8 Mar 97 21:33:47 GMT (Last modified)
From: Perl-Request@ruby.oce.orst.edu (Perl-Users-Digest Admin)
Subject: Digest Administrivia (Last modified: 8 Mar 97)
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.
To submit articles to comp.lang.perl.misc (and this Digest), send your
article to perl-users@ruby.oce.orst.edu.
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.
The Meta-FAQ, an article containing information about the FAQ, is
available by requesting "send perl-users meta-faq". The real FAQ, as it
appeared last in the newsgroup, can be retrieved with the request "send
perl-users FAQ". Due to their sizes, neither the Meta-FAQ nor the FAQ
are included in the digest.
The "mini-FAQ", which is an updated version of the Meta-FAQ, is
available by requesting "send perl-users mini-faq". It appears twice
weekly in the group, but is not distributed in the digest.
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 V8 Issue 378
*************************************