|
#!/usr/bin/perl
my %opts ;
my @args ;
{
my $opts = 1;
foreach ( @ARGV ) {
if ( $opts ) {
$opts = 0 if /^--$/;
$opts {$1} = $2 if /^-([a-zA-Z])(.+)$/;
} else {
push ( @args , $_ );
}
}
}
my $mode = $opts { 'M' };
if ( $mode eq 'redirect' ) {
my $stdout = $opts { 'o' } || die "No -o" ;
my $stderr = $opts { 'O' } || die "No -O" ;
open (STDOUT, ">$stdout" ) || die "Could not redirect STDOUT to $stdout: $!" ;
open (STDERR, ">$stderr" ) || die "Could not redirect STDERR to $stderr: $!" ;
select STDERR; $| = 1;
select STDOUT; $| = 1;
exec { $args [0] } @args ;
die "Could not exec " . join ( ' ' , @args ) . ": $!" ;
}
else {
die "Unknown mode: $mode\n" ;
}
|