projects
/
p5sagit/p5-mst-13.2.git
/ blob
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
blame
|
history
|
raw
|
HEAD
This is my patch patch.1l for perl5.001.
[p5sagit/p5-mst-13.2.git]
/
lib
/
Shell.pm
1
package Shell;
2
3
sub import {
4
my $self = shift;
5
my ($callpack, $callfile, $callline) = caller;
6
my @EXPORT;
7
if (@_) {
8
@EXPORT = @_;
9
}
10
else {
11
@EXPORT = 'AUTOLOAD';
12
}
13
foreach $sym (@EXPORT) {
14
*{"${callpack}::$sym"} = \&{"Shell::$sym"};
15
}
16
};
17
18
AUTOLOAD {
19
my $cmd = $AUTOLOAD;
20
$cmd =~ s/^.*:://;
21
eval qq {
22
sub $AUTOLOAD {
23
if (\@_ < 2) {
24
`$cmd \@_`;
25
}
26
else {
27
open(SUBPROC, "-|")
28
or exec '$cmd', \@_
29
or die "Can't exec $cmd: \$!\n";
30
if (wantarray) {
31
my \@ret = <SUBPROC>;
32
close SUBPROC; # XXX Oughta use a destructor.
33
\@ret;
34
}
35
else {
36
local(\$/) = undef;
37
my \$ret = <SUBPROC>;
38
close SUBPROC;
39
\$ret;
40
}
41
}
42
}
43
};
44
goto &$AUTOLOAD;
45
}
46
47
1;