summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--op.c7
-rw-r--r--pod/perlfunc.pod3
-rwxr-xr-xt/op/exec.t6
3 files changed, 14 insertions, 2 deletions
diff --git a/op.c b/op.c
index c10bf952ac..48437cfccb 100644
--- a/op.c
+++ b/op.c
@@ -6908,8 +6908,13 @@ Perl_ck_open(pTHX_ OP *o)
o->op_private |= OPpOPEN_OUT_CRLF;
}
}
- if (o->op_type == OP_BACKTICK)
+ if (o->op_type == OP_BACKTICK) {
+ if (!(o->op_flags & OPf_KIDS)) {
+ op_free(o);
+ return newUNOP(OP_BACKTICK, 0, newDEFSVOP());
+ }
return o;
+ }
{
/* In case of three-arg dup open remove strictness
* from the last arg if it is a bareword. */
diff --git a/pod/perlfunc.pod b/pod/perlfunc.pod
index c23dbd9af5..ab0213636c 100644
--- a/pod/perlfunc.pod
+++ b/pod/perlfunc.pod
@@ -4305,6 +4305,8 @@ error, returns the undefined value and sets C<$!> (errno). If EXPR is
omitted, uses C<$_>.
=item readpipe EXPR
+
+=item readpipe
X<readpipe>
EXPR is executed as a system command.
@@ -4315,6 +4317,7 @@ multi-line) string. In list context, returns a list of lines
This is the internal function implementing the C<qx/EXPR/>
operator, but you can use it directly. The C<qx/EXPR/>
operator is discussed in more detail in L<perlop/"I/O Operators">.
+If EXPR is omitted, uses C<$_>.
=item recv SOCKET,SCALAR,LENGTH,FLAGS
X<recv>
diff --git a/t/op/exec.t b/t/op/exec.t
index c13849199a..ed5b2b6116 100755
--- a/t/op/exec.t
+++ b/t/op/exec.t
@@ -19,7 +19,7 @@ my $Is_Win32 = $^O eq 'MSWin32';
skip_all("Tests mostly usesless on MacOS") if $^O eq 'MacOS';
-plan(tests => 21);
+plan(tests => 22);
my $Perl = which_perl();
@@ -106,6 +106,10 @@ is( <<`END`, "ok\n", '<<`HEREDOC`' );
$Perl -le "print 'ok'"
END
+{
+ my $_ = qq($Perl -le "print 'ok'");
+ is( readpipe, "ok\n", 'readpipe default argument' );
+}
TODO: {
my $tnum = curr_test();