in the parameter slot so it can be overwritten in the caller, or
an exception will be raised.
+The filehandles may also be integers, in which case they are understood
+as file descriptors.
+
open3() returns the process ID of the child process. It doesn't return on
failure: it just raises an exception matching C</^open3:/>. However,
C<exec> failures in the child are not detected. You'll have to
close $_[0] or croak "$Me: close($_[0]) failed: $!";
}
-sub xfileno {
- my ($fh) = @_;
- return $1 if $fh =~ /^=?(\d+)$/; # deal with $fh just being an fd
- return fileno $fh;
+sub fh_is_fd {
+ return $_[0] =~ /\A=?(\d+)\z/;
}
-sub fh_is_fd {
- return $_[0] =~ /^=?\d+$/;
+sub xfileno {
+ return $1 if $_[0] =~ /\A=?(\d+)\z/; # deal with fh just being an fd
+ return fileno $_[0];
}
my $do_spawn = $^O eq 'os2' || $^O eq 'MSWin32';