[8521] in Perl-Users-Digest

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

Perl-Users Digest, Issue: 2138 Volume: 8

daemon@ATHENA.MIT.EDU (Perl-Users Digest)
Thu Mar 19 15:17:58 1998

Date: Thu, 19 Mar 98 12:00:30 -0800
From: Perl-Users Digest <Perl-Users-Request@ruby.OCE.ORST.EDU>
To: Perl-Users@ruby.OCE.ORST.EDU (Perl-Users Digest)

Perl-Users Digest           Thu, 19 Mar 1998     Volume: 8 Number: 2138

Today's topics:
    Re: ? Any Perl scripts already written to print out all <doug@weboneinc.net>
        ANNOUNCE: Expect 1.04 spamthehellawayfrommebitch@habit.com
        ANNOUNCE: Math::MagicSquare 1.01 module <pivari@geocities.com>
        ANNOUNCE: new Puppet::Any module <domi@marlis.grenoble.hp.com>
        ANNOUNCE: PDF-1.05 library <antro@technologist.com>
        ANNOUNCE: PGPHTML 3.0: a perl script to make PGP signed <pivari@geocities.com>
        ANNOUNCE: Puppet::Log module <domi@marlis.grenoble.hp.com>
        ANNOUNCE: TK::Multi v 0.4 <domi@marlis.grenoble.hp.com>
        Backreference problem <frederic@xilinx.com>
    Re: Backreference problem (Craig Berry)
        cperl and emacs 19.28 -- HELP <achoy@us.oracle.com>
        PDL (Perl Data Language) 1.9902, numeric programming in (Tuomas Lukka)
    Re: PERL on win95 <lecorre@magic.fr>
    Re: Troubles "perl"ifying a shellscript that uses pipes (Mike Stok)
        w3mir 1.0 released <janl@math.uio.no>
    Re: Wanted: email address gleaner <jp@glpbooks.BADMAIL.com>
        Digest Administrivia (Last modified: 8 Mar 97) (Perl-Users-Digest Admin)

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

Date: Thu, 19 Mar 1998 14:44:07 -0500
From: Douglas Clifton <doug@weboneinc.net>
Subject: Re: ? Any Perl scripts already written to print out all of the field names on a form?
Message-Id: <35117587.47A3411E@weboneinc.net>

Sneex wrote:
> 
> As I have previous stated via a private mail -
> 
> It's either CGI.pm or write your own Browser,
> but hey, why reinvent the wheel :-)

You still don't get it, the original poster
wanted a script that parses an HTML file,
*not* and HTML file that calls a CGI to
determine the names of form input fields.

-- 
Douglas Clifton
Unix/C/Perl/CGI/HTML Programmer
doug@weboneinc.com


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

Date: 19 Mar 1998 19:31:59 GMT
From: spamthehellawayfrommebitch@habit.com
Subject: ANNOUNCE: Expect 1.04
Message-Id: <6errrf$m33$1@news1.teleport.com>



	There is a new version of Expect for Perl which should be making its
way across CPAN at this very moment. For those of you who aren't superexcited
just hearing about it because you know how cool the first publicly released
version was (heh heh heh), Expect is a successor to chat2.pl and comm.pl
which MUCH more closely ressembles tcl's Expect. Expect is MUCH more portable
than its predecessors and includes all the same neat-o debugging features
of tcl's Expect plus a little. A full introduction to Expect and why it's so
keen is included below.

	New and (I think) cool features include the ability to match regular
expressions and literals within the same call, settable multiline matching,
soft and hard closing of handles, a FAQ, and a couple nice bugfixes. All this
is meant to make it easier to use.
	I've also taken the time to do a brief tutorial on how to use it, as
per a request, including some cool stuff like building an arbitrary TCP
client to automate your dirty work.
	WARNING: I changed expect() to match literals by default as well as
match multiple lines so ^ and $ match beginnings and endings of lines. This
will make your life easier in the long run and it makes Expect more like its
tcl brethren but it makes it NOT DIRECTLY COMPATIBLE WITH 1.01 (!). Read the
docs! I don't plan on changing anything this fundamental with the module in
the future but I did warn people that it was *alpha* software in 1.01.

Following is a copy of the tutorial introduction, followed by a FAQ and an
example that demonstrates how you can use it to automate a process.

	Please send any comments to me @ habit.com, where me is tex.

	Thanks,

	Austin

-----

        Why is this tool useful?

        Chances are if you are reading this you probably have already used
the fine Expect for tcl, and possibly even read Exploring Expect. You are
interested in learning how to accomplish the same things you've done in tcl
using perl, or perhaps are just totally irritated at tcl.

        Expect is a generic tool for talking to processes that normally
require user interaction. This might be running an ftp client to grab a file,
telnetting to a router to grab statistics or reset an interface. Or, as in the
case of a place I recently administered, to start up a secure webserver
without having to be physically at the machine to enter the super secret
password.
        Expect talks to processes through ptys. To it, a process is mostly
just a bidirectional file handle, much the same as a socket. In fact, it is
possible to take a filehandle you've already used and pass it off to expect to
interact with.
        Now, something you might say at this point is "well, but there are
tools that I can use to do that with for more common protocols like telnet and
ftp already, such as Net::Ftp and Net::Telnet. Why would I want to use your
tool?". This is true. You might never want to use it. However, there are a few
advantages Expect has over similar modules:


        1. A consistent interface. You don't have to remember the syntax for
the other tools.
        2. It is more intuitive (my opinion, of course) because you already
know how to use the clients you are familiar with. Once you learn how to
talk to a process using Expect you will have an easy time automating your
other tasks.
        3. It is more versatile. With Expect you can connect multiple
processes together, write to log files, talk to sockets, etc.
        4. Consistent debugging. Debugging, IMHO, is much easier in Expect
than in other tools because you have the ability to watch the interaction
take place, and it's really pretty easy to use.

        One serious disadvantage of Expect is that scripts generated using it
are generally non-portable. The way a client 'looks' is important to building
a script to talk to it. Interacting with a client on DG-UX may be very
different than the equivalent client on SunOS. Or, and ncftp would be a good
example of this, a client may be different between versions. Similarly, if
an administrator changes versions of a server it might send back different
prompts than what you are looking for. These are things you should be aware
of.

----

	Here is 'example 5.A' of the tutorial, which demonstrates
interaction with an rlogin process.

#!/usr/local/bin/perl

$RSH='/usr/bin/ssh';

$host_to_login_to=shift(@ARGV);

use Expect;

# Debugging anyone?
# $Expect::Log_Stdout=1;
# $Expect::Exp_Internal=1;
# $Expect::Debug=1;

print "Enter password: ";
$|=1;
# First we have to initialize STDIN in to an expect object.
$stdin=Expect->exp_init(\*STDIN);
# Now turn off echoing
$stdin->exp_stty('-echo');
# The easy way to do this is:
#$password=<STDIN>;
#chop $password;
# The somewhat harder way is to use $stdin->expect. This would look like:
#
 ($match_num,$error,$match,$before,$after)=$stdin->expect(undef,"\n");
 $password = $before;
# Turn echo back on
$stdin->exp_stty('echo');
# print that newline that wasn't echoed
print "\n";
$rsh=Expect->spawn($RSH,$host_to_login_to);

# Look for a password prompt.
$rsh->expect(30,'-re','word:\s$')||(die"Never got password prompt\n");

print $rsh "$password\r";

# Look for a prompt. Prompt can be # $ > or ] followed by a whitespace.
$prompt  = '[\]\$\>\#]\s$';

# Note the use of -re
$rsh->expect(30,'-re',$prompt)||(die "Never got prompt on host\n");

# Start top
print $rsh "exec top\r";

# We already have an inited handle for STDIN above which we can use.
# We don't just do $rsh->interact because it will go monkeying
# with tty settings by default (set it raw).
$stdin->manual_stty(1);
# Instead we use interconnect directly.


# The trick here is to make sure:
# 1. Everything listening to a handle is added to its
# listen group.
# 2. Only what you want is jabbering at STDOUT.
#
# In this case only $rsh will talk to STDOUT so we don't have to
# change any log_stdout() settings.
$stdin->set_group($rsh);
Expect::interconnect($stdin,$rsh);


-----

	Here's example 6 which demonstrates how you can interact with a socket
to talk to (in this case) a mail server.
#!/usr/bin/perl -w

use Expect;
use IO::Socket;

# Arg. 0 hostname of mail server
$mail_server=shift(@ARGV);
# Remaining args will be email addresses.
@addresses=@ARGV;
die "Usage: $0 mail_server address1 [address2 address3.. addressN]\n" unless
  @addresses;

# Connect to mail server. This is right out of perldoc IO::Socket.

$smtp_sock = IO::Socket::INET->new(PeerAddr => "$mail_server:smtp(25)");
die "Couldn't connect to $mail_server, $!" unless defined $smtp_sock;

# Turn the socket in to an expect object.
$smtp_session=Expect->exp_init($smtp_sock);
# By default Expect doesn't print out the output of an exp_inited item.
# Generally you don't want handles jabbering at you. In this case
# we might turn it on so we can watch what happens.
#$smtp_session->log_stdout(1);

# Watch debugging?
#$smtp_session->exp_internal(1);

# Ok, now let's see if the mail server wants to talk to us:
$smtp_session->expect(30,'-re','^220.*\n')||die "Bad response from server\n";

# Cool. Now let's introduce ourselves to the server.
# There are many other ways to gain the FQDN of this box. This is mine,
# and it's easy. This of course assumes you have uname and that -n returns
# your hostname.
$my_hostname = `uname -n`; chomp $my_hostname;

print $smtp_session "HELO $my_hostname\n";

# My server responds with a 250 + stuff. Presumably that's RFC compliant.
# Feel free to go look :-)
$smtp_session->expect(30,'-re','^250.*\n')||die "Bad response after HELO\n";

# Try sending mail.. I should probably use my username rather than user@
# but I'm too lazy.
print $smtp_session "MAIL FROM:<user\@$my_hostname>\n";
$smtp_session->expect(30,'-re','^250.*\n')||die "Bad response after FROM\n";

# Now to check each address...
foreach $address (@addresses) {
  print $smtp_session "RCPT TO:<$address>\n";
  # Now check the status...
  ($match_num,$error,$match)=$smtp_session->expect(30,'-re','^\d\d\d');
  die "Never got response back after trying RCPT to $address\n" if $error;
  $status = $match;
  # Read to the newline so the server will be ready for the next address.
  # If the server spit back something other than 250 we'll display the
  # Whole error.
  ($match_num,$error,$match)=$smtp_session->expect(30,'-re','.*\n');
  die "Server seems to have hung after trying address $address\n" if $error;
  if ($status == 250) {
    $status = "ok\n";
  } else {
    $status.=$match;
  }
  print "Status of address $address: $status";
}

# Be good citizens, send a quit.
print $smtp_session "QUIT\n";

# At which point it should die nicely.
$smtp_session->soft_close();
----


	Dassa all! Send me kudos/grief!

	Austin

-----== Posted via Deja News, The Leader in Internet Discussion ==-----
http://www.dejanews.com/   Now offering spam-free web-based newsreading




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

Date: 19 Mar 1998 19:32:28 GMT
From: Fabrizio Pivari <pivari@geocities.com>
Subject: ANNOUNCE: Math::MagicSquare 1.01 module
Message-Id: <6errsc$m3b$1@news1.teleport.com>

What is Math::MagicSquare module?
The first purpose of this PERL module is to help you to check your
Square, to answer these questions
Is it a Semimagic Square?
Is it a Magic Square?

The second purpose of this PERL module is to help you to print your
Square.
At the moment the method available is 'print' that prints the square on
STDOUT.
I'd like to add
- printhtml (to print the square in HTML format)
- pringif     (to print the square in a GIF image)
- prinpdf   (to print the square in PDF format)

What is a Magic Square?
Do you like Magic Square?
Do you want to know more information about Magic Square?
Try to visit

A very good introduction on Magic Square
http://www.astro.virginia.edu/~eww6n/math/MagicSquare.html

A whole collection of links and documents in Internet
http://www.pse.che.tohoku.ac.jp/~msuzuki/MagicSquare.html

A good collection of strange Magic Square
http://www.geocities.com/CapeCanaveral/Lab/3469/examples.html

The only Magic Square checker and gif maker in Internet (I think)
http://www.geocities.com/CapeCanaveral/Lab/3469/squaremaker.html

What's new with version 1.01
Added use of Carp routines to verify the number of rows and columns is
equal

Where can I find it?
http://www.geocities.com/CapeCanaveral/Lab/3469/Math-MagicSquare.html
is the primary location
You also can find it at CPAN archive

Enjoy it!

Send me your suggestions.



--
Fabrizio Pivari
mailto:pivari@geocities.com
http://www.geocities.com/CapeCanaveral/Lab/3469/
Member of ANFACE Software
http://www.geocities.com/CapeCanaveral/Hangar/4794/






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

Date: 19 Mar 1998 19:36:26 GMT
From: Dominique Dumont <domi@marlis.grenoble.hp.com>
Subject: ANNOUNCE: new Puppet::Any module
Message-Id: <6ers3q$m8d$1@news1.teleport.com>


Hello

Here's my last new perl (I said it ;-) ) modules :

Puppet::Any adpO Base class for an optionnal Tk GUI to your class   DDUMONT



Puppet::* classes are designed to provide an access to the "puppeted"
object using a GUI based on Tk.

The basic idea is when you construct a Puppet::* object, you have all the
functionnality of the object without the GUI. Then, when the need arises,
you may (or the class may decide to) open the GUI of the object and then
the user may perform any interactive he wishes.

On the other hand, if the need does not arise, you may instanciate a lot of 
objects without cluttering your display.

For instance, if you have an object (say a ProcessGroup) 
controlling a set of processes (Process objects). The user may start the
ProcessGroup through its GUI. Then all processes are run. If one of them
fails, it will raise its own GUI to display the cause of the problem and 
let the user decide what to do. 

This class named Puppet::Any is the base class inherited by all other 
Puppet classes. In this example, Process and Process group both will 
inherit Puppet::Any.

The base class features :
- A Tk::Multi::Manager to show or hide the different display of the base class
  (or of the derived class)
- A menu bar
- An event log display so derived object may log their activity
- A Debug log display so derived object may log their "accidental"
  activities
- An Object Scanner to display the attribute of the derived object
- A set of functions to managed "has-a" relationship between Puppet objects.
  The menu bar feature a "content" bar which enabled the user to open the
  display of all "contained" objects.

Future puppets derived of Puppet::Any will be :
Puppet::Twins (for RPC calls and Puppet features)
Puppet::Process
Puppet::ProcessGroup
Puppet::AtomicTest (no nuke there, its just a test that cannot be divided)

Don't ask me for a release or a release date of them. I have prototypes of
most of them and I'll release them when I get the time to put them in a proper 
shape and to document them.




-- 
Dominique_Dumont@grenoble.hp.com




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

Date: 19 Mar 1998 19:32:57 GMT
From: Antonio Rosella <antro@technologist.com>
Subject: ANNOUNCE: PDF-1.05 library
Message-Id: <6errt9$m3h$1@news1.teleport.com>

New Release: 1.05

Name           DSLI  Description                                  Info
-----------    ----  -------------------------------------------- -----
PDF            bdpO  Access information in a PDF file             ANTRO

The PDF library is a proposed library for access the information 
contained inside a PDF file. PDF stands for Portable Document Format and
is
a standard proposed by Adobe ( See http://www.adobe.com/ for more
details ) .

Install "as usual" with:

        perl Makefile.PL
        make
        make install

Then, you can try the scripts in the example directory that tests 
if a file is a PDF ( not looking at the .pdf extension :-), the PDF 
version used to write them, their number of pages and the various 
Info ( Author, Creation date, etc. ).

NEWS:

The library can now handle correctly an Info Dictionary with 
multiline strings.

AVAILABILITY:

The library is available at 

<http://www.geocities.com/CapeCanaveral/Hangar/4794/>

and at all CPAN mirror 

Enjoy

Antonio "Antro" Rosella 

-- 
____ __ _ ___ ____ ____  Antonio "Antro" Rosella
|--| | \|  |  |--< [__]  antro@technologist.com
Member of ANFACE anface@yahoo.com anface@geocities.com
http://www.geocities.com/CapeCanaveral/Hangar/4794/




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

Date: 19 Mar 1998 19:33:26 GMT
From: Fabrizio Pivari <pivari@geocities.com>
Subject: ANNOUNCE: PGPHTML 3.0: a perl script to make PGP signed web-pages
Message-Id: <6erru6$m3r$1@news1.teleport.com>

Hi,

I'm glad to announce the version 3.0 of PGPHTML a perl script to make
PGP signed web-pages
After I had read the nice page of Noel Bell (mailto:EJNBell@pobox.com)
"PGP signed web-pages" at http://www.pobox.com/~ejnbell/pgp-www.html,
I thought "nice method but not very simple to use".
For this reason I write a simple perl tool pgphtml to generate PGP
signed web-pages.

What's new with version 3.0:
The code was rewrited in PERL 5.xxx mode
Without parameters, the help is print
Added a control on file extension: only .html .HTM .html .HTML
extensions are
accepted

This is the URL where you can find the tool
http://www.geocities.com/CapeCanaveral/Lab/3469

Enjoy it!

Send me your suggestions.

--
Fabrizio Pivari
mailto:pivari@geocities.com
http://www.geocities.com/CapeCanaveral/Lab/3469/
Member of ANFACE Software
http://www.geocities.com/CapeCanaveral/Hangar/4794/






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

Date: 19 Mar 1998 19:31:35 GMT
From: Dominique Dumont <domi@marlis.grenoble.hp.com>
Subject: ANNOUNCE: Puppet::Log module
Message-Id: <6errqn$m30$1@news1.teleport.com>


Hello

This message to announce the release of the new Puppet::Log module.
(Beta version).

The suggested module list line will be :
Puppet::Log  bdpO logging facility based on Tk    DDUMONT

I Think it should go in the "development support" section.

Here's an extract of the readme file:

This class defines a log facility based on Tk usable by any class.

This log class will store all text passed to it. When its display
is not opened, the log text may be written on stdout. If a display is
opened, the text display will be updated with the log text.

When the display is created it will feature all logs written since the
creation of this object or since the clear method was called.

Puppet::* classes are designed to provide an access to the 
object using a GUI based on Tk.

The basic idea is when you construct a Puppet::* object, you have all the
functionnality of the object without the GUI. Then, when the need arises,
you may (or the class may decide to) open the GUI of the object.
On the other hand, if the need does not arise, you may instanciare a lot of 
object wihout cluttering your display.

For instance, if you have an object (say a ProcessGroup) 
controlling a set of proceses (Process objects). The user may start the
ProcessGroup through its GUI. Then all processes are run. If one of them
fails, it will raise its own GUI to display the cause of the problem and 
let the user decide what to do. 

This Log facility is but the tiniest bit of the Puppet objects I have
in store (or in mind).

Future Puppet will feature :
Puppet::Any 
Puppet::Twins (for RPC calls and Puppet features)
Puppet::Process
Puppet::ProcessGroup
Puppet::AtomicTest (no nuke there, its just a test that cannot be divided)

Don't ask me for a release or a release date of them. I have prototypes of
most of them and I'll release them when I get the time to put them in a proper 
shape and to document them.

Thanks for your comments

Cheers

-- 
Dominique_Dumont@grenoble.hp.com




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

Date: 19 Mar 1998 19:34:19 GMT
From: Dominique Dumont <domi@marlis.grenoble.hp.com>
Subject: ANNOUNCE: TK::Multi v 0.4
Message-Id: <6errvr$m6c$1@news1.teleport.com>


Hello

The new version of Tk_Multi now features :
- read-only text widgets
- a canvas widgets
- a base class to make your own Multi::* widget.

Here's the new readme file

Tk_Multi is a set of Tk composite widget to allow you to manage
several scrolled Text or Canvas (or your own Multi widget) widgets
in your Toplevel window. 

The manager allows you to hide or show any managed text window through a menu.

Tk::Multi::* widgets also have buttons to increase, decrease the window 
size, and a menu to print its content. 

The Multi::Any module can be inherited to define your own widget which will
be managed by Tk::Multi::Manager.

This module was written with perl5.004 and now works fine with Tk402.003.



-- 
Dominique_Dumont@grenoble.hp.com




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

Date: Thu, 19 Mar 1998 09:47:16 +0000
From: Frederic RIVOALLON <frederic@xilinx.com>
Subject: Backreference problem
Message-Id: <3510E9A4.B3ED7A62@xilinx.com>

Hello all,

  I would like to insert the string '01' before an underscore in a
string so I wrote:

$StringToBeChanged =~ s/(.*)_/$101_/;

But this does not work perl must be looking for $101 instead of $1 and
then 01.

Is there a way to make this work without using a separate variable like
this

$fix = '01_';
$StringToBeChanged =~ s/(.*)_/$1$fix/;

If you know the answer please email to frederic@xilinx.com

Thanks



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

Date: 19 Mar 1998 19:34:45 GMT
From: cberry@cinenet.net (Craig Berry)
Subject: Re: Backreference problem
Message-Id: <6ers0l$3s0$1@marina.cinenet.net>

Frederic RIVOALLON (frederic@xilinx.com) wrote:
:   I would like to insert the string '01' before an underscore in a
: string so I wrote:
: 
: $StringToBeChanged =~ s/(.*)_/$101_/;
: 
: But this does not work perl must be looking for $101 instead of $1 and
: then 01.

Yes.

: Is there a way to make this work without using a separate variable like
: this
: 
: $fix = '01_';
: $StringToBeChanged =~ s/(.*)_/$1$fix/;

Why didn't you just try that?  It should work just like you've written it. 
Another way would be

  $StringToBeChanged =~ s/(.*)_/${1}01_/;

(using {} to disambiguate where the variable name ends).

Still better (in my view) is

  $StringToBeChanged =~ s/_/01_/;

which removes the need for the match variable entirely.

---------------------------------------------------------------------
   |   Craig Berry - cberry@cinenet.net
 --*--    Home Page: http://www.cinenet.net/users/cberry/home.html
   |      Member of The HTML Writers Guild: http://www.hwg.org/   
       "Every man and every woman is a star."


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

Date: Thu, 19 Mar 1998 11:37:58 -0800
From: Allen Choy <achoy@us.oracle.com>
Subject: cperl and emacs 19.28 -- HELP
Message-Id: <35117415.1285D780@us.oracle.com>

Hi.

I recently picked up cperl-mode.el and am a recent user of emacs.  Can
someone tell me
how I can change the color schemes?  Some perl builtins like 'ref' show
up in extremely
dark colors.

--Allen



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

Date: 19 Mar 1998 19:34:45 GMT
From: lukka@fas.harvard.edu (Tuomas Lukka)
Subject: PDL (Perl Data Language) 1.9902, numeric programming in Perl
Message-Id: <6ers0l$m6m$1@news1.teleport.com>

The beta version 1.9902 of PDL is now available on CPAN. 

PDL is a freely-available number-crunching extension for perl, which
allows fast and memory-efficient manipulation of large numerical
datasets.  You can write normal perl syntax ($c = $a + $b) to
manipulate vectors or matrices or N-dimensional data. Sample
applications (in which PDL has already been used) include image
processing, two and three dimensional plotting, pipeline data
reduction, quick-look data visualisation, neural networks, machine
learning, medical visualization, hydrodynamics and quantum-mechanical
simulations.  While these have historically been the domain of special
purpose matrix-oriented languages such as IDL(R/Tm)* and MatLab(R/Tm)*,
PDL allows Perl to be used in just such a manner. PDL has a very
open-architecture and is easy to interface to new subroutine and
graphics libraries.

One of the main advantages of PDL over similar packages is the
availability of the enormous, and heavily used, perl software base.
Available to PDL users are powerful string and file handling, well
developed interfaces to C, Fortran, and Java, to GUI toolkits such as
tk and gtk, to databases, ftp, the web, etc.  The user will find that
these features offer indispensable support to the number crunching
routines.

See http://www.aao.gov.au/local/www/kgb/perldl/ for more info
and links.

New features after 1.11 are countless but here is an overview:
	 - a simple but powerful interface to 3-dimensional OpenGL
	   visualization routines with animation (PDL::Graphics::TriD),
	   also supports VRML to some degree.

	 - assigning to slices of piddles / indexed piddles (e.g.
	   after
		$a = zeroes 100,100; 
		$b = $a->diagonal(0,1); # diagonal between dims 0 and 1 
		$b .= 1; # PDL special assignment operator 
	   $a contains a unit matrix). Also to piddles indexed
	   by other piddles.

	 - efficient manipulation of multidimensional data.

	 - preprocessor for interfacing external C routines with
	   little work for multiple datatypes and writing new fast
	   routines while avoiding loop index bugs.

	 - new IO formats, e.g. netCDF, NDF, GIF, TIFF, JPG.
	   Also, flexible access to raw binary data from C and
	   FORTRAN programs.

	 - many new routines for data processing

	 - online help in the perldl shell

	 - interactive matrix browser using curses
	   (PDL::IO::Browser)

	 - quick random access to data by mmapping it from the disk
	   (PDL::IO::FastRaw::mapfraw)

	 - interface to Karma applications toolkit for alternative 3d
	   visualisation (PDL::Graphics::Karma)

	 - object-oriented internal design allowing users to
	   derive their own objects from piddles.

People interested in doing numeric processing are encouraged to pick
this software up and give it a test run.

Because this is beta-stage software, the documentation, although quite
extensive, may not always be the most informative possible to help
beginners get going in PDL. We will be glad to answer your questions
(and add the instructions to the FAQ and to the documentation for other
users) at our mailinglist perldl@jach.hawaii.edu

KNOWN PROBLEMS WITH 1.9902:

 - picrgb tests fail on some platforms due to unavailable converters
 - Graphics/TriD/OpenGL compilation may fail - try generate.pl 
   in that directory

PLEASE READ THE FILES "INSTALL", "README" and "DEPENDENCIES" 
in the distribution for other possible problems.

=== From introduction to PDL:

Perl is an extremely good and versatile scripting language, well suited
to beginners and allows rapid prototyping. However until recently it
did not support data structures which allowed it to do fast number
crunching.

However with the development of Perl v5, Perl acquired 'Objects'. To
put it simply users can define their own special data types, and write
custom routines to manipulate them either in low level languages (C and
Fortran) or in Perl itself.

This has been fully exploited by the PerlDL developers. The 'PDL'
module is a complete Object-Oriented extension to Perl (although you
don't have to know what an object is to use it) which allows large
N-dimensional data sets, such as large images, spectra, time series,
etc to be stored  B<efficiently> and manipulated B<en masse>.  For
example  with the PDL module we can write the perl code C<$a=$b+$c>,
where $b and $c are large datasets (e.g. 2048x2048 images), and get the
result in only a fraction of a second.

PDL variables (or 'piddles' as they have come to be known) support a
wide range of fundamental data types - arrays can be bytes, short
integers (signed or unsigned), long integers, floats or double
precision floats. And because of the Object-Oriented nature of PDL new
customised datatypes can be derived from them.

As well as the PDL modules, that can be used by normal perl programs,
PerlDL comes with a command line perl shell, called 'perldl', which
supports command line editing. In combination with the various PDL
graphics modules this allows data to be easily played with and
visualised.

* all trademarks are owned by their owners.

+ THERE IS ABSOLUTELY NO WARRANTY WITH THIS SOFTWARE - SEE THE FILE
'COPYING' IN THE DISTRIBUTION FOR DETAILS.
-- 
#!/usr/bin/perl -MPDL -MPDL::Graphics::TriD
$s=150;$a=zeroes $s,$s;$r=$a->xvals/$s*2-1.5;$i=$a->yvals/$s*2-1;$t=$r;
$u=$i;for(0..20){$q=$r**2-$i**2+$t;$h=2*$r*$i+$u;($r,$i)=map{$_->hclip(
5)->lclip(-5)}($q,$h);}imagrgb[($r**2+$i**2)>2.0];




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

Date: Thu, 19 Mar 1998 20:15:31 +0100
From: "LE CORRE" <lecorre@magic.fr>
Subject: Re: PERL on win95
Message-Id: <6erqol$d27$1@paris.magic.fr>


you need a server (PWS, IIS...apache) on your local machine.


Hoegy a icrit dans le message <6ephhi$ooe$1@news3.Belgium.EU.net>...
>how can I execute a local PERl script with HTML-code.
>I can run my PERL-script from DOS, but it doesn't work from my HTML code.
>My form doesn't send the data-string to the perl script.
>my form looks like this:
>    <form action="guestbk.pl" method="post">
>   Naam: <BR><input type=file size=40 name="name"><br>
>   E-mail: <BR><input type=text size=40 name="e_mail"><br>
>   <INPUT Type=submit Value="Post">
>   <INPUT Type=reset Value="Cancel">
>If I run it on the web-server, it works fine
>
>




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

Date: 19 Mar 1998 18:55:42 GMT
From: mike@stok.co.uk (Mike Stok)
Subject: Re: Troubles "perl"ifying a shellscript that uses pipes
Message-Id: <6erpne$lom@news-central.tiac.net>

In article <6erl7a$s0t$1@nnrp1.dejanews.com>,  <schwern@starmedia.net> wrote:
>Perl can't interpolate a mathematical function in a string, so...
>
>system("echo This line has ".($n+1)." words | cat");

You can be a little devious:

  DB<1> $n = 5

  DB<2> print "n + 1 is ${\($n + 1)}"
n + 1 is 6
  DB<3> print "n + 2 is ${\($n + 2)} and n is $n"
n + 2 is 7 and n is 5

If you want you can use @{[ ... ]} to get list context around ...

Hope this helps,

Mike
-- 
mike@stok.co.uk                    |           The "`Stok' disclaimers" apply.
http://www.stok.co.uk/~mike/       |   PGP fingerprint FE 56 4D 7D 42 1A 4A 9C
http://www.tiac.net/users/stok/    |                   65 F3 3F 1D 27 22 B7 41
stok@colltech.com                  |            Collective Technologies (work)


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

Date: 19 Mar 1998 19:35:39 GMT
From: Nicolai Langfeldt <janl@math.uio.no>
Subject: w3mir 1.0 released
Message-Id: <6ers2b$m7p$1@news1.teleport.com>


w3mir 1.0 was released today.

``w3mir is a all purpose HTTP copying and mirroring tool. The main focus
of w3mir is to create and maintain a browsable copy of one, or
several, remote WWW site(s). Used to the max w3mir can retrive the
contents of several related sites and leave the mirror browseable via
a local web server, or from a filesystem, such as directly from a
CDROM.''

w3mir is available on CPAN:
http://www.perl.com/CPAN/authors/Nicolai_Langfeldt as well as it's
homepage at http://www.math.uio.no/~janl/w3mir/.

Please see w3mir-1.0-INSTALL for installation instructions for w3mir
and the prerequisites.

  file: $CPAN/authors/id/JANL/w3mir-1.0.tar.gz
  size: 77987 bytes
   md5: 7064d5277d33bf526f60ac62c16d5752

Regards,
  Nicolai Langfeldt




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

Date: Thu, 19 Mar 1998 14:50:29 +0000
From: Jeff Potter <jp@glpbooks.BADMAIL.com>
Subject: Re: Wanted: email address gleaner
Message-Id: <351130B5.E07@glpbooks.BADMAIL.com>

Nathan V. Patwardhan wrote:
[]
> It's not that you're spamming or intend to, but it's that giving you
> such code is something that *everyone* can see and use for evil
> purposes.  At least that's why I'm not fond of doing this for you.

Well, it wouldn't have to be a public transaction of course.
I'm using the program to find addresses and autoreply to posts
for an archive that's offline. No one else will see it. 

Heck, I'd figure that there'd be a big famous website somewhere
that sold all the tools that spammers need. 

By the way, the 'rape of the Net' that I and the archivist
intend to do (not) is to assist in saving owner-operated restaurants in 
non-metro areas nationwide. They're becoming extinct. Our national 
heritage is suffering as chains take over. At present there isn't 
a good print directory for such restaurants. The net newsgroups that share 
this info are very helpful but very limited in their population impact.
Netizens there have expressed great hopes for such a print database.
So I'm volunteering, netlike, and am trying to put together a book. 
I need a gleaner and autoreplier to do it. Credit will be freely given! 

-- 

Jeff Potter   jp@glpbooks.BADMAIL.com   delete '.BADMAIL' to reply
***"Out Your Backdoor": Friendly Magazine of DIY Adventure and Culture
       http://www.glpbooks.com/oyb ... with new bookstore & bulletin board


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

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 2138
**************************************

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