Shell - run shell commands transparently within perl
See below.
Date: Thu, 22 Sep 94 16:18:16 -0700
Message-Id: <9409222318.AA17072@scalpel.netlabs.com>
To: perl5-porters@isu.edu
From: Larry Wall <lwall@scalpel.netlabs.com>
Subject: a new module I just wrote
Here's one that'll whack your mind a little out.
#!/usr/bin/perl
use Shell;
$foo = echo("howdy", "<funny>", "world");
print $foo;
$passwd = cat("</etc/passwd");
print $passwd;
sub ps;
print ps -ww;
cp("/etc/passwd", "/etc/passwd.orig");
That's maybe too gonzo. It actually exports an AUTOLOAD to the current package (and uncovered a bug in Beta 3, by the way). Maybe the usual usage should be
use Shell qw(echo cat ps cp);
Larry
If you set $Shell::capture_stderr to 1, the module will attempt to capture the STDERR of the process as well.
If you set $Shell::capture_stderr to -1, the module will discard the STDERR of the process.
The module now should work on Win32.
Jenda
There seemed to be a problem where all arguments to a shell command were quoted before being executed. As in the following example:
cat('</etc/passwd');
ls('*.pl');
really turned into:
cat '</etc/passwd'
ls '*.pl'
instead of:
cat </etc/passwd
ls *.pl
and of course, this is wrong.
I have fixed this bug, it was brought up by Wolfgang Laun [ID 20000326.008]
Casey
Shell now has an OO interface. Good for namespace conservation and shell representation.
use Shell;
my $sh = Shell->new;
print $sh->ls;
Casey
Larry Wall
Changes by Jenda@Krynicky.cz and Dave Cottle <d.cottle@csc.canterbury.ac.nz>
Changes and bug fixes by Casey West <casey@geeknest.com>