The prototype for truncate was changed so that perl won't die
with C<use strict;> when the first arg is a bareword (filehandle).
I think it was Tom (as in "tchrist") who brought this up.
Here's a patch that undoes the damage, makes it work with
C<use strict;>, and adds to the testsuite.
eof eof ck_eof is F?
tell tell ck_fun st F?
seek seek ck_fun s F S S
-truncate truncate ck_trunc is F S
+# truncate really behaves as if it had both "S S" and "F S"
+truncate truncate ck_trunc is S S
fcntl fcntl ck_fun st F S S
ioctl ioctl ck_fun st F S S
if (hints & HINT_STRICT_SUBS &&
lastchar != '-' &&
strnNE(s,"->",2) &&
+ last_lop_op != OP_TRUNCATE && /* S/F prototype in opcode.pl */
last_lop_op != OP_ACCEPT &&
last_lop_op != OP_PIPE_OP &&
last_lop_op != OP_SOCKPAIR)