truncate() has a peculiar exemption from strict barewords, even
Gurusamy Sarathy [Fri, 11 Jun 1999 16:51:04 +0000 (16:51 +0000)]
though it has a non-filehandle prototype

p4raw-id: //depot/perl@3533

op.c
t/io/fs.t

diff --git a/op.c b/op.c
index 5097156..8257d7d 100644 (file)
--- a/op.c
+++ b/op.c
@@ -5534,9 +5534,12 @@ Perl_ck_trunc(pTHX_ OP *o)
 
        if (kid->op_type == OP_NULL)
            kid = (SVOP*)kid->op_sibling;
-       if (kid &&
-         kid->op_type == OP_CONST && (kid->op_private & OPpCONST_BARE))
+       if (kid && kid->op_type == OP_CONST &&
+           (kid->op_private & OPpCONST_BARE))
+       {
            o->op_flags |= OPf_SPECIAL;
+           kid->op_private &= ~OPpCONST_STRICT;
+       }
     }
     return ck_fun(o);
 }
index b92ef8e..b74c9ca 100755 (executable)
--- a/t/io/fs.t
+++ b/t/io/fs.t
@@ -142,8 +142,11 @@ else {
   if (-z "Iofs.tmp") {print "ok 24\n"} else {print "not ok 24\n"}
   open(FH, ">Iofs.tmp") or die "Can't create Iofs.tmp";
   { select FH; $| = 1; select STDOUT }
-  print FH "helloworld\n";
-  truncate FH, 5;
+  {
+    use strict;
+    print FH "helloworld\n";
+    truncate FH, 5;
+  }
   if ($^O eq 'dos') {
       close (FH); open (FH, ">>Iofs.tmp") or die "Can't reopen Iofs.tmp";
   }