Perl 5.005_03 on obsidian as a target for modern Perl - prediction log. Author: Claude Opus 5.5 (claude-opus-5-5). Series letter: V. Written BEFORE running any of these constructs on obsidian's Perl 5.005_03, and before listing its library directory. Format: ID [confidence] claim. "Compile error" means perl -c fails; "run-time error" means it compiles and dies when run; "silent" means it runs without an error message but does something other than intended. Already observed on 2026-10-07/08 while porting NSI v4 (not predictions, not scored): use warnings fails (no warnings.pm); 3-argument open is a compile error ("Too many arguments for open"); Time::HiRes is missing; open(STDERR, '>&', STDOUT) fails to compile under strict (bareword STDOUT); an undefined lexical used as a file handle dies at run time ("Can't use an undefined value as filehandle reference"); Symbol::gensym, Cwd, Getopt::Long, File::Basename and POSIX load; while () clobbers the caller's $_, and inside map it empties the list being mapped; Perl starts in about 0.02 s, use POSIX adds about 0.12 s. --- round 1 --- V01 [0.85] no warnings; fails the same way as use warnings (cannot locate warnings.pm). V02 [0.90] use 5.006; fails at compile time, naming the running version as 5.00503. V03 [0.55] our $x; is a compile-time syntax error. V04 [0.70] $x // 1 (defined-or) is a compile-time error. V05 [0.60] say "hi"; compiles and dies at run time with "Undefined subroutine &main::say". V06 [0.80] use constant FOO => 1; works. V07 [0.65] use constant { A => 1, B => 2 }; (several constants at once) fails or defines something other than A and B. V08 [0.90] qr// works. V09 [0.75] The \z regex anchor works. V10 [0.80] Lookbehind (?<=...) works. V11 [0.60] sprintf("%vd", "1.22.333") does not produce "1.22.333". V12 [0.50] exists &foo is a compile-time error. V13 [0.70] binmode(STDOUT, ':utf8') is a compile-time error (too many arguments). V14 [0.60] use utf8; fails (no utf8.pm). V15 [0.70] $^V is undefined (prints as an empty string). V16 [0.70] File::Spec loads. V17 [0.80] File::Temp is missing. V18 [0.85] Scalar::Util is missing. V19 [0.85] List::Util is missing. V20 [0.85] Data::Dumper loads. V21 [0.80] CGI.pm loads. V22 [0.50] CGI.pm's version is below 2.50. V23 [0.80] Digest::MD5 is missing. V24 [0.75] Storable is missing. V25 [0.80] IO::File loads. V26 [0.60] while (my $line = ) processes a final line consisting of "0" with no newline (the implicit defined() test exists in 5.005). V27 [0.90] A key/value hash slice %h{'a','b'} is a compile-time error. V28 [0.55] sort { $a <=> $b } with a named sub (sort by_num @x) and a sub that uses $a/$b declared in the same package works; tested as plain sort-by-name, it works. Fri Oct 9 12:14:03 PM MDT 2026 === OUTCOMES (scored 2026-10-09) === Evidence: tests/V01.pl-V28.pl run on obsidian with /usr/bin/perl 5.005_03 (perl -c, then a run); results-5005.txt. The same files on Perl 5.32.1 for contrast: results-532.txt. V01 HIT [0.85] "Can't locate warnings.pm in @INC". V02 HIT [0.90] "Perl 5.006 required--this is only version 5.00503". V03 PARTIAL [0.55] a compile-time error, but not a syntax error: `our` parses as a call to a sub named our, and the error is "Can't modify subroutine entry in scalar assignment". V04 HIT [0.70] "Search pattern not terminated": // starts an empty pattern match. V05 MISS [0.60] a compile-time error, not a run-time one: "String found where operator expected ... (Do you need to predeclare say?)". Perl 5.32 says the same without use feature 'say'. V06 HIT [0.80] works. V07 HIT [0.65] dies at compile time: "Can't define "HASH(0x...)" as constant". V08 HIT [0.90] works. V09 HIT [0.75] works. V10 HIT [0.80] works. V11 HIT [0.60] prints "%vd" literally (no %v format). The test was weak: on 5.32 it prints 49.46.50.50.46.51.51.51, the codes of a plain string's characters, which is correct. V12 HIT [0.50] "exists operator argument is not a HASH element". V13 MISS [0.70] compiles and runs. Silent: binmode takes one argument in 5.005, so the layer parses as a separate expression and is ignored; only -w says anything ("Useless use of a constant in void context"). V14 HIT [0.60] "Can't locate utf8.pm". V15 HIT [0.70] $^V undefined. V16 HIT [0.70] loads; catfile works. V17 HIT [0.80] missing. V18 HIT [0.85] missing. V19 HIT [0.85] missing. V20 HIT [0.85] loads. V21 HIT [0.80] loads (and is missing from Perl 5.32, which dropped it from core). V22 HIT [0.50] version 2.46. V23 HIT [0.80] missing. V24 HIT [0.75] missing. V25 HIT [0.80] loads. V26 HIT [0.60] both lines counted, including the final "0". V27 HIT [0.90] "Can't use subscript on private hash". V28 HIT [0.55] the claim is badly worded (two claims in one); scored on its last clause: sort with a named sub using $a/$b works (1 9 10 100). Calibration: <0.50: none 0.50-0.79: 12/15 (V03 partial, V05 and V13 miss) >=0.80: 13/13 Not predicted: binmode's second argument is silently dropped rather than rejected; `our` fails as an assignment to a sub call; say fails at compile time even on modern Perl without the feature; CGI.pm is present in 5.005 but absent from modern Perl's core.