[28032] in Perl-Users-Digest
Perl-Users Digest, Issue: 9396 Volume: 10
daemon@ATHENA.MIT.EDU (Perl-Users Digest)
Wed Jun 28 00:05:49 2006
Date: Tue, 27 Jun 2006 21:05:04 -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 Tue, 27 Jun 2006 Volume: 10 Number: 9396
Today's topics:
Re: making exe of a perl script <nomail@sorry.com>
Re: Parsing data file, need help with the logic <benmorrow@tiscali.co.uk>
Re: Parsing data file, need help with the logic <jgibson@mail.arc.nasa.gov>
Re: Parsing data file, need help with the logic <jgibson@mail.arc.nasa.gov>
Re: Problem with Multi- threaded Server <janicehwang1325@yahoo.com>
Re: Problem with Multi- threaded Server <janicehwang1325@yahoo.com>
Re: Searching each element of an array with grep <benmorrow@tiscali.co.uk>
Re: What is Expressiveness in a Computer Language [corr <david.nospam.hopwood@blueyonder.co.uk>
Re: What is Expressiveness in a Computer Language <cdsmith@twu.net>
Re: What is Expressiveness in a Computer Language <sleepingsquirrel@yahoo.com>
Re: What is Expressiveness in a Computer Language <eval.apply@gmail.com>
Re: What is Expressiveness in a Computer Language <david.nospam.hopwood@blueyonder.co.uk>
Re: What is Expressiveness in a Computer Language <http://phr.cx@NOSPAM.invalid>
Re: WIN32 PPM and perldoc problems <benmorrow@tiscali.co.uk>
Digest Administrivia (Last modified: 6 Apr 01) (Perl-Users-Digest Admin)
----------------------------------------------------------------------
Date: Tue, 27 Jun 2006 15:51:49 -0700
From: Arvin Portlock <nomail@sorry.com>
Subject: Re: making exe of a perl script
Message-Id: <e7scs8$1ja1$1@agate.berkeley.edu>
king wrote:
> Hi,
> I have written a perl script and i want this script to be used by
> others.
> But they will have to install active perl to make that work.
> and of course if i have used any modules in that script then they have
> to install that module as well.
I do this ALL the time. perl2exe can be tricky to make work.
There may be hidden runtime dependencies that are VERY hard to
find. Consider this little gem from Net::SSH::Perl:
sub protocol_class {
join '::', __PACKAGE__,
($_[1] == PROTOCOL_SSH2 ? "SSH2" : "SSH1");
}
... elsewhere in code:
(my $lib = $proto_class . ".pm") =~ s!::!/!g;
require $lib;
Unless you explicitely tell perl2exe about this, it will
barf. But if you can get it to work, perl2exe is a great
choice.
PAR is much easier to get working but the file size is a
lot larger than a perl2exe distribution and takes longer
to start up. I've also noticed it doesn't always do a good
job of cleaning up after itself. But it pretty much always
works and the learning curve is considerably easier than
perl2exe. Plus, it's free!
Personally I bundle up a small miniperl distribution using
Inno Setup. It includes only the perl parts needed for the
program and I can often fit the whole thing on a floppy. But
be careful which perl you distribute this way as most have
licensing restrictions which prevent you from distributing
modified versions. I use the Apache win32 perl distribution.
http://www.apache.org/dyn/closer.cgi/perl/win32-bin
Or you can compile your own. You cannot distribute
ActiveState perl outside of your organization without
a license.
If you need more help let me know. Like I said, I do
this all the time.
Arvin
------------------------------
Date: Tue, 27 Jun 2006 21:55:10 +0100
From: Ben Morrow <benmorrow@tiscali.co.uk>
Subject: Re: Parsing data file, need help with the logic
Message-Id: <eii8n3-uda.ln1@osiris.mauzo.dyndns.org>
Quoth guser@packetstorm.org:
> ah i got it now, something like this
>
> while (<FILE>) {
> ($hostname) = /.+:(.*)/ if (/Host Name/);
> ($primdnssuf) = /.+:(.*)/ if (/Primary Dns Suffix/);
> ($mediastate) = /.+:(.*)/ if (/Media State/);
> ($physaddress)= /.+:(.*)/ if (/Physical Address/);
> ($ipaddress) = /.+:(.*)/ if (/IP Address/);
> ($description) = /.+:(.*)/ if (/Description/);
>
>
>
> if ($mediastate ne '') { push (@mediastate,$mediastate); }
> if ($physaddress ne '') { push (@physaddress,$physaddress); }
> if ($description ne '') { push (@description,$description); }
>
> $hostname = '';
> $primdnssuf = '';
> $mediastate = '';
> $physaddress = '';
> $description = '';
> }
>
> then i get the physaddress array size and use that to loop for each
> adapter array entry I stored.
I would write this more like
my (@mediastate, @physaddress, @description);
while (<FILE>) {
my ($k, $v) = /(.+?):(.*)/ or next;
for ($k) {
/Media State/ and push @mediastate, $v;
/Physical Address/ and push @physaddress, $v;
/Description/ and push @description, $v;
}
}
as I think it puts things in a better order (first we check the basic
syntax, then the key). If you're not stuck with those variables, I'd
grab all the info like
my %status;
while (<FILE>) {
/\s* (.+?) [.\s]* : (.*)/x or next;
push @{ $status{$1} }, $2;
}
and then you've got your data in @{$status{'Media State'}} &c.
Ben
--
Outside of a dog, a book is a man's best friend.
Inside of a dog, it's too dark to read.
benmorrow@tiscali.co.uk Groucho Marx
------------------------------
Date: Tue, 27 Jun 2006 16:50:39 -0700
From: Jim Gibson <jgibson@mail.arc.nasa.gov>
Subject: Re: Parsing data file, need help with the logic
Message-Id: <270620061650394476%jgibson@mail.arc.nasa.gov>
In article <slrnea353k.ee4.glennj@smeagol.ncf.ca>, Glenn Jackman
<glennj@ncf.ca> wrote:
> At 2006-06-27 04:06PM, guser@packetstorm.org <guser@packetstorm.org> wrote:
> > ah i got it now, something like this
> >
> > while (<FILE>) {
> > ($hostname) = /.+:(.*)/ if (/Host Name/);
> > ($primdnssuf) = /.+:(.*)/ if (/Primary Dns Suffix/);
> > ($mediastate) = /.+:(.*)/ if (/Media State/);
...etc.
>
> Or:
> while (<FILE>) {
> my ($hostname, $primdnssuf, $mediastate, $physaddress,
> $ipaddress, $description);
>
> # don't need to perform 2 regex matches per line
Actually, it is 6 regex matches per non-matching line (that doesn't
contain any of the search strings), and 7 for a matching line.
> if (/Host Name.+:(.*)/) { $hostname = $1; }
> if (/Primary Dns Suffix.+:(.*)/) { $primdnssuf = $1; }
> if (/IP Address.+:(.*)/) { $ipaddress = $1; }
...etc.
So I would write this
if( /Host Name.+:(.*)/ ) {
$hostname = $1;
}elsif( /Primary Dns Suffix.+:(.*)/ ) {
$primdnssuf = $1;
}elsif( /IP Address.+:(.*)/ ) {
$ipaddress = $1;
} ... etc.
which still gives 6 tests for non-matching lines, but only 1-6 for
matches. You could also speed it up by using index instead of regex
matching for the initial tests, if speed is a concern.
Posted Via Usenet.com Premium Usenet Newsgroup Services
----------------------------------------------------------
** SPEED ** RETENTION ** COMPLETION ** ANONYMITY **
----------------------------------------------------------
http://www.usenet.com
------------------------------
Date: Tue, 27 Jun 2006 16:55:06 -0700
From: Jim Gibson <jgibson@mail.arc.nasa.gov>
Subject: Re: Parsing data file, need help with the logic
Message-Id: <270620061655060519%jgibson@mail.arc.nasa.gov>
In article <1151438799.622845.86210@y41g2000cwy.googlegroups.com>,
<guser@packetstorm.org> wrote:
> ah i got it now, something like this
>
> while (<FILE>) {
> ($hostname) = /.+:(.*)/ if (/Host Name/);
> ($primdnssuf) = /.+:(.*)/ if (/Primary Dns Suffix/);
> ($mediastate) = /.+:(.*)/ if (/Media State/);
> ($physaddress)= /.+:(.*)/ if (/Physical Address/);
> ($ipaddress) = /.+:(.*)/ if (/IP Address/);
> ($description) = /.+:(.*)/ if (/Description/);
>
>
>
> if ($mediastate ne '') { push (@mediastate,$mediastate); }
> if ($physaddress ne '') { push (@physaddress,$physaddress); }
> if ($description ne '') { push (@description,$description); }
>
> $hostname = '';
> $primdnssuf = '';
> $mediastate = '';
> $physaddress = '';
> $description = '';
> }
>
> then i get the physaddress array size and use that to loop for each
> adapter array entry I stored.
>
That will work if you always have every piece of data. If there is a
possibility that a datum will not appear, you have to be more careful.
I would save up the data in a temporary hash or scalars until the end
of a record (or beginning of next record) is encountered, then save the
variables as a unit, perhaps in an array of arrays or hashes, then
clear all temporary storage to undef or '' and start reading the next
record.
Posted Via Usenet.com Premium Usenet Newsgroup Services
----------------------------------------------------------
** SPEED ** RETENTION ** COMPLETION ** ANONYMITY **
----------------------------------------------------------
http://www.usenet.com
------------------------------
Date: 27 Jun 2006 18:28:19 -0700
From: "janicehwang1325@yahoo.com" <janicehwang1325@yahoo.com>
Subject: Re: Problem with Multi- threaded Server
Message-Id: <1151458099.873127.289800@y41g2000cwy.googlegroups.com>
For your information, I am running my program in FreeBSD(should have
mention earlier, sorry bout this) and connect to the FreeBSD using SSH.
Therefore, I don't think I can use "stunnel" program for it. One more
interesting to share with you all, I tried to run the program on
another machine using PERL 5.8.6, it works!!! However, using back on a
machine with PERL 5.8.5, it fails. I wonder it is related to the memory
thing? That's why the program having segmentation fault problem? I will
try to get more machines to test it on and share with you all.
P/S: I didn't get any reply from the maintainers of IO::Socket::SSL.
Ted Zlatanov wrote:
> On 26 Jun 2006, janicehwang1325@yahoo.com wrote:
>
> > Ya, I miss that part and I amend my program by putting the close with
> > SSL_no_shutdown. However, this only help when the client program ends
> > the connection and the server program would not hang. It does not
> > actually solve the segmentation fault problem. I did send my problem to
> > the maintainers of IO::Socket::SSL. While waiting for their reply, will
> > keep debuggin. Thank you very much for your information. I appreciates
> > a lot. Anyhow, any progressions on the program will be shared.
>
> One last thing: you could try the `stunnel' program as your SSL
> front-end, and run your server behind it. I don't know if it's
> available on Windows, or if something like it is available on Windows,
> but it's definitely something you should consider if SSL breaks your
> otherwise good threaded server.
>
> Ted
------------------------------
Date: 27 Jun 2006 20:39:49 -0700
From: "janicehwang1325@yahoo.com" <janicehwang1325@yahoo.com>
Subject: Re: Problem with Multi- threaded Server
Message-Id: <1151465989.377274.263100@m73g2000cwd.googlegroups.com>
Maybe you can try run the program usign PERL 5.8.6 version. I am still
testing if the segfault problem have something to do with the version
of the PERL.
xhoster@gmail.com wrote:
> "janicehwang1325@yahoo.com" <janicehwang1325@yahoo.com> wrote:
> > Ya, I miss that part and I amend my program by putting the close with
> > SSL_no_shutdown. However, this only help when the client program ends
> > the connection and the server program would not hang. It does not
> > actually solve the segmentation fault problem.
>
> The SSLeay module seems to be fundamentally unsafe for threads. I tried a
> few things to hack it with CLONED, etc. but haven't been able to. The mere
> existence of a thread is enough to trigger the problem, the thread doesn't
> need to do anything with the socket at all. By changing the "close"
> parameters, I could make it segfault either ealier (upon the initial close)
> or later (half way through the 2nd accept) but couldn't get rid of it
> altogether.
>
>
> __SERVER__
> use threads;
> use POSIX ":sys_wait_h";
> use IO::Socket::SSL qw(debug4);
> use IO::Handle;
> use strict;
>
> my ($sock);
>
> unless (@ARGV == 1) { die "usage: perl $0 <Port Number>" };
> my ($port) = @ARGV;
>
> if(!($sock = IO::Socket::SSL->new( Listen => 20, LocalPort => $port,
> Proto => 'tcp', ReuseAddr => 1,
> SSL_key_file => 'certs/newkey.pem',
> SSL_cert_file => 'certs/newcert.pem',
> )) ) {
> warn "unable to create socket: ", &IO::Socket::SSL::errstr, "\n";
> exit(0);
>
> }
>
> warn "SSL socket created: $sock.\n";
> while(1){
>
> while((my $s = $sock->accept())) {
> warn "I accepted $s";
> print "new thread here .. \n";
> my $thread = threads->create(sub {sleep 5});
> $thread->join;
> warn "joined";
> $s->close(SSL_no_shutdown => 1);
> }
> }
>
>
> __CLIENT__
> #!/usr/bin/perl
>
> use POSIX ":sys_wait_h";
> use IO::Socket::SSL;
> use IO::Handle;
> use strict;
> use warnings;
>
> unless (@ARGV == 1) { die "usage: perl $0 <Port Number>" };
> my ($port) = @ARGV;
> my $sock = IO::Socket::SSL->new("localhost:$port") or die "$! $@ ",
> &IO::Socket::SSL::errstr; use Data::Dumper;
> warn "SSL socket created: $sock.\n";
> warn Dumper $sock;
>
> print $sock "asldfjalsdjfsadlfj\n";
> __END__
>
> --
> -------------------- http://NewsReader.Com/ --------------------
> Usenet Newsgroup Service $9.95/Month 30GB
------------------------------
Date: Tue, 27 Jun 2006 21:34:25 +0100
From: Ben Morrow <benmorrow@tiscali.co.uk>
Subject: Re: Searching each element of an array with grep
Message-Id: <hbh8n3-uda.ln1@osiris.mauzo.dyndns.org>
Quoth "A. Sinan Unur" <1usa@llenroc.ude.invalid>:
> "Dr.Ruud" <rvtol+news@isolution.nl> wrote in news:e7s27g.vs.1
> @news.isolution.nl:
> > A. Sinan Unur schreef:
> >> Dr.Ruud:
> >>> KaZ:
> >
> >>>> I'm trying to find all elements of an array that match a particular
> >>>> pattern. So far, I used:
> >>>>
> >>>> grep { /\t$var\t/ } @array
> >>>
> >>> ITYM: grep /\t$var\t/, @array
> >>
> >> C:\DOCUME~1\asu1\LOCALS~1\Temp> perldoc -f grep
> >> grep BLOCK LIST
> >> grep EXPR,LIST
> >>
> >> Why do you prefer the second the first form?
> >
> > Because the block isn't necessary.
>
> It is not wrong, though.
It is slower, though. A BLOCK has a finite amount of bookkeeping:
~% perl -MBenchmark=cmpthese -e'
my @foo = ("foo") x 1000;
cmpthese 0, {
block => sub { grep { /foo/ } @foo },
expr => sub { grep /foo/, @foo },
};'
Rate block expr
block 378/s -- -70%
expr 1279/s 238% --
It's always cleaner and often faster to say what you mean.
Ben
--
I must not fear. Fear is the mind-killer. I will face my fear and
I will let it pass through me. When the fear is gone there will be
nothing. Only I will remain.
benmorrow@tiscali.co.uk Frank Herbert, 'Dune'
------------------------------
Date: Tue, 27 Jun 2006 23:29:07 GMT
From: David Hopwood <david.nospam.hopwood@blueyonder.co.uk>
Subject: Re: What is Expressiveness in a Computer Language [correction]
Message-Id: <7bjog.229500$8W1.29971@fe1.news.blueyonder.co.uk>
David Hopwood wrote:
> Joe Marshall wrote:
>
>>(defun blackhole (argument)
>> (declare (ignore argument))
>> #'blackhole)
>
> This is typeable in any system with universally quantified types (including
> most practical systems with parametric polymorphism); it has type
> "forall a . a -> #'blackhole".
Ignore this answer; I misinterpreted the code.
I believe this example requires recursive types. It can also be expressed
in a gradual typing system, but possibly only using an unknown ('?') type.
ISTR that O'Caml at one point (before version 1.06) supported general
recursive types, although I don't know whether it would have supported
this particular example.
--
David Hopwood <david.nospam.hopwood@blueyonder.co.uk>
------------------------------
Date: Tue, 27 Jun 2006 16:30:50 -0600
From: Chris Smith <cdsmith@twu.net>
Subject: Re: What is Expressiveness in a Computer Language
Message-Id: <MPG.1f0b5f831fd60c06989723@news.altopia.net>
Pascal Costanza <pc@p-cos.net> wrote:
> You can ignore the #'. In Scheme this as follows:
>
> (define blackhole (argument)
> blackhole)
>
> It just means that the function blackhole returns the function blackhole.
So, in other words, it's equivalent to (Y (\fa.f)) in lambda calculus,
where \ is lambda, and Y is the fixed point combinator?
--
Chris Smith - Lead Software Developer / Technical Trainer
MindIQ Corporation
------------------------------
Date: 27 Jun 2006 16:12:06 -0700
From: "Greg Buchholz" <sleepingsquirrel@yahoo.com>
Subject: Re: What is Expressiveness in a Computer Language
Message-Id: <1151449926.348233.20910@p79g2000cwp.googlegroups.com>
Joe Marshall wrote:
> It isn't clear to me which programs we would have to give up, either.
> I don't have much experience in sophisticated typed languages. It is
> rather easy to find programs that baffle an unsophisticated typed
> language (C, C++, Java, etc.).
>
> Looking back in comp.lang.lisp, I see these examples:
>
> (defun noisy-apply (f arglist)
> (format t "I am now about to apply ~s to ~s" f arglist)
> (apply f arglist))
Just for fun, here is how you might do "apply" in Haskell...
{-# OPTIONS -fglasgow-exts #-}
class Apply x y z | x y -> z where
apply :: x -> y -> z
instance Apply (a->b) a b where
apply f x = f x
instance Apply b as c => Apply (a->b) (a,as) c where
apply f (x,xs) = apply (f x) xs
f :: Int -> Double -> String -> Bool -> Int
f x y z True = x + floor y * length z
f x y z False= x * floor y + length z
args = (1::Int,(3.1415::Double,("flub",True)))
main = print $ apply f args
...which depends on the fact that functions are automatically curried
in Haskell. You could do something similar for fully curried function
objects in C++. Also of possible interest...
Functions with the variable number of (variously typed) arguments
http://okmij.org/ftp/Haskell/types.html#polyvar-fn
...But now I'm curious about how to create the "apply" function in a
language like Scheme. I suppose you could do something like...
(define (apply fun args)
(eval (cons fun args)))
...but "eval" seems a little like overkill. Is there a better way?
Greg Buchholz
------------------------------
Date: 27 Jun 2006 16:21:53 -0700
From: "Joe Marshall" <eval.apply@gmail.com>
Subject: Re: What is Expressiveness in a Computer Language
Message-Id: <1151450513.458623.139460@b68g2000cwa.googlegroups.com>
David Hopwood wrote:
> Joe Marshall wrote:
>
> > (defun blackhole (argument)
> > (declare (ignore argument))
> > #'blackhole)
>
> This is typeable in any system with universally quantified types (including
> most practical systems with parametric polymorphism); it has type
> "forall a . a -> #'blackhole".
The #' is just a namespace operator. The function accepts a single
argument and returns the function itself. You need a type that is a
fixed point (in addition to the universally quantified argument).
> >>The real question is, are there some programs that we
> >>can't write *at all* in a statically typed language, because
> >>they'll *never* be typable?
> >
> > Certainly! As soon as you can reflect on the type system you can
> > construct programs that type-check iff they fail to type-check.
>
> A program that causes the type checker not to terminate (which is the
> effect of trying to construct such a thing in the type-reflective systems
> I know about) is hardly useful.
>
> In any case, I think the question implied the condition: "and that you
> can write in a language with no static type checking."
Presumably the remainder of the program does something interesting!
The point is that there exists (by construction) programs that can
never be statically checked. The next question is whether such
programs are `interesting'. Certainly a program that is simply
designed to contradict the type checker is of limited entertainment
value, but there should be programs that are independently non
checkable against a sufficiently powerful type system.
------------------------------
Date: Tue, 27 Jun 2006 23:50:12 GMT
From: David Hopwood <david.nospam.hopwood@blueyonder.co.uk>
Subject: Re: What is Expressiveness in a Computer Language
Message-Id: <Uujog.229504$8W1.48150@fe1.news.blueyonder.co.uk>
Joe Marshall wrote:
> David Hopwood wrote:
>>Joe Marshall wrote:
>>
>>>(defun blackhole (argument)
>>> (declare (ignore argument))
>>> #'blackhole)
>>
>>This is typeable in any system with universally quantified types (including
>>most practical systems with parametric polymorphism); it has type
>>"forall a . a -> #'blackhole".
>
> The #' is just a namespace operator. The function accepts a single
> argument and returns the function itself. You need a type that is a
> fixed point (in addition to the universally quantified argument).
Yes, see the correction in my follow-up.
>>>>The real question is, are there some programs that we
>>>>can't write *at all* in a statically typed language, because
>>>>they'll *never* be typable?
>>>
>>>Certainly! As soon as you can reflect on the type system you can
>>>construct programs that type-check iff they fail to type-check.
>>
>>A program that causes the type checker not to terminate (which is the
>>effect of trying to construct such a thing in the type-reflective systems
>>I know about) is hardly useful.
>>
>>In any case, I think the question implied the condition: "and that you
>>can write in a language with no static type checking."
>
> Presumably the remainder of the program does something interesting!
>
> The point is that there exists (by construction) programs that can
> never be statically checked.
I don't think you've shown that. I would like to see a more explicit
construction of a dynamically typed [*] program with a given specification,
where it is not possible to write a statically typed program that meets
the same specification using the same algorithms.
AFAIK, it is *always* possible to construct such a statically typed
program in a type system that supports typerec or gradual typing. The
informal construction you give above doesn't contradict that, because
it depends on reflecting on a [static] type system, and in a dynamically
typed program there is no type system to reflect on.
[*] Let's put aside disagreements about terminology for the time being,
although I still don't like the term "dynamically typed".
> The next question is whether such
> programs are `interesting'. Certainly a program that is simply
> designed to contradict the type checker is of limited entertainment
> value,
I don't know, it would probably have more entertainment value than most
executive toys :-)
> but there should be programs that are independently non
> checkable against a sufficiently powerful type system.
Why?
Note that I'm not claiming that you can check any desirable property of
a program (that would contradict Rice's Theorem), only that you can
express any dynamically typed program in a statically typed language --
with static checks where possible and dynamic checks where necessary.
--
David Hopwood <david.nospam.hopwood@blueyonder.co.uk>
------------------------------
Date: Wed, 28 Jun 2006 02:53:17 GMT
From: Paul Rubin <http://phr.cx@NOSPAM.invalid>
Subject: Re: What is Expressiveness in a Computer Language
Message-Id: <7xwtb2j8ir.fsf@ruckus.brouhaha.com>
David Hopwood <david.nospam.hopwood@blueyonder.co.uk> writes:
> Note that I'm not claiming that you can check any desirable property of
> a program (that would contradict Rice's Theorem), only that you can
> express any dynamically typed program in a statically typed language --
> with static checks where possible and dynamic checks where necessary.
It starts to look like sufficiently powerful static type systems are
confusing enough, that programming with them is at least as bug-prone
as imperative programming in dynamically typed languages. The static
type checker can spot type mismatches at compile time, but the
types themselves are easier and easier to get wrong.
------------------------------
Date: Tue, 27 Jun 2006 21:38:27 +0100
From: Ben Morrow <benmorrow@tiscali.co.uk>
Subject: Re: WIN32 PPM and perldoc problems
Message-Id: <3jh8n3-uda.ln1@osiris.mauzo.dyndns.org>
Quoth jovo.miskin@sciatl.com:
>
> I've tried it. The output is the same.
> C:\Perl\bin>perldoc.bat -f gmtime
> Syntax error
>
> C:\Perl\bin>
>
> I beleive, that both problems, perldoc and ppm are of the same nature
> concerning
> some sort command line interpreter compatibility issue.
>
> This is ppm output:
> C:\Perl\bin>ppm
> Unknown or ambiguous command '*'; type 'help' for commands.
My (wild, unsupported) guess from this is that your .BAT association has
got messed up. It should look something like (from memory)
c:\winnt\system32\cmd.exe "%*"
: is the % missing?
Ben
--
Joy and Woe are woven fine,
A Clothing for the Soul divine William Blake
Under every grief and pine 'Auguries of Innocence'
Runs a joy with silken twine. benmorrow@tiscali.co.uk
------------------------------
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 9396
***************************************