home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 4 / Apprentice-Release4.iso / Source Code / C / Applications / MacPerl 5.0.3 / Preinstalled MacPerl (FAT) / lib / Shell.pm < prev    next >
Encoding:
Text File  |  1995-03-20  |  819 b   |  50 lines  |  [TEXT/McPL]

  1. die "Shell.pm not (yet) implemented on the Mac";
  2.  
  3. package Shell;
  4.  
  5. sub import {
  6.     my $self = shift;
  7.     my ($callpack, $callfile, $callline) = caller;
  8.     my @EXPORT;
  9.     if (@_) {
  10.     @EXPORT = @_;
  11.     }
  12.     else {
  13.     @EXPORT = 'AUTOLOAD';
  14.     }
  15.     foreach $sym (@EXPORT) {
  16.         *{"${callpack}::$sym"} = \&{"Shell::$sym"};
  17.     }
  18. };
  19.  
  20. AUTOLOAD {
  21.     my $cmd = $AUTOLOAD;
  22.     $cmd =~ s/^.*:://;
  23.     eval qq {
  24.     sub $AUTOLOAD {
  25.         if (\@_ < 2) {
  26.         `$cmd \@_`;
  27.         }
  28.         else {
  29.         open(SUBPROC, "-|")
  30.             or exec '$cmd', \@_
  31.             or die "Can't exec $cmd: \$!\n";
  32.         if (wantarray) {
  33.             my \@ret = <SUBPROC>;
  34.             close SUBPROC;    # XXX Oughta use a destructor.
  35.             \@ret;
  36.         }
  37.         else {
  38.             local(\$/) = undef;
  39.             my \$ret = <SUBPROC>;
  40.             close SUBPROC;
  41.             \$ret;
  42.         }
  43.         }
  44.     }
  45.     };
  46.     goto &$AUTOLOAD;
  47. }
  48.  
  49. 1;
  50.