SQL-SimpleOps v2023.274.1 Perl 5 v5.38.0 OpenBSD.amd64-openbsd

Status
Pass
From
Nigel Horne
Dist
SQL-SimpleOps v2023.274.1
Platform
Perl 5 v5.38.0 OpenBSD.amd64-openbsd
Date
2023-10-09 08:05:26
ID
9a95f1ee-667a-11ee-afe3-67ac684d068d
This distribution has been tested as part of the CPAN Testers
project, supporting the Perl programming language.  See
http://wiki.cpantesters.org/ for more information or email
questions to cpan-testers-discuss@perl.org


--
Dear Carlos Celso de Almeida,

This is a computer-generated report for SQL-SimpleOps-2023.274.1
on perl 5.38.0, created by CPAN-Reporter-1.2019.

Thank you for uploading your work to CPAN.  Congratulations!
All tests were successful.

Sections of this report:

    * Tester comments
    * Program output
    * Prerequisites
    * Environment and other context

------------------------------
TESTER COMMENTS
------------------------------

Additional comments from tester:

this report is from an automated smoke testing program
and was not reviewed by a human for accuracy

------------------------------
PROGRAM OUTPUT
------------------------------

Output from '/usr/bin/make test':

PERL_DL_NONLAZY=1 "/home/njh/perl5/perlbrew/perls/perl-5.38.0-clang/bin/perl5.38.0" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
# No type of test found
# See README.txt before doing any test
t/testDB.t ..... ok
# 
# ################################################################
# test: 010
# format: Delete( table=>"t1", force=>1 )
# rc: 0
# result: DELETE FROM t1
# status: SUCCESSFUL
# ################################################################
# test: 011
# format: Delete( table=>"t1", where => [ fld => 123 ] )
# rc: 0
# result: DELETE FROM t1 WHERE fld = '123'
# status: SUCCESSFUL
# ################################################################
# test: 020
# format: Insert( table=>"t1", fields => { a => 1, b => 2, c => 3 } )
# rc: 0
# result: INSERT INTO t1 (a,b,c) VALUES ('1','2','3')
# status: SUCCESSFUL
# ################################################################
# test: 021
# format: Insert( table=>"t1", fields => [ "a","b","c" ], values => [ 1,2,3 ] )
# rc: 0
# result: INSERT INTO t1 (a,b,c) VALUES ('1','2','3')
# status: SUCCESSFUL
# ################################################################
# test: 030
# format: Update( table=>"t1", fields => { a => 1, b => 2 }, where => [ c => [ "!", 3 ] ] )
# rc: 0
# result: UPDATE t1 SET a = '1', b = '2' WHERE c != '3'
# status: SUCCESSFUL
# ################################################################
# test: 031
# format: Update( table=>"t1", fields => { a => '\concat(a,"xxxx")' }, force => 1 )
# rc: 0
# result: UPDATE t1 SET a = concat(a,"xxxx")
# status: SUCCESSFUL
# ################################################################
# test: 040
# format: Select( table=>"t1", fields => [ "a","b","c"] )
# rc: 0
# result: SELECT a, b, c FROM t1
# status: SUCCESSFUL
# ################################################################
# test: 041
# format: Select( table=>"t1", fields => [ "a","b","c"], where => [ d=>4 ] )
# rc: 0
# result: SELECT a, b, c FROM t1 WHERE d = '4'
# status: SUCCESSFUL
# ################################################################
# test: 043
# format: Select( table=>"t1", fields => [ "a","b","c"], where => [ d=>4, e=>5 ] )
# rc: 0
# result: SELECT a, b, c FROM t1 WHERE d = '4' AND e = '5'
# status: SUCCESSFUL
# ################################################################
# test: 044
# format: Select( table=>"t1", fields => [ "a","b","c"], where => [ d=>'\substr(e,1,8)' ] )
# rc: 0
# result: SELECT a, b, c FROM t1 WHERE d = substr(e,1,8)
# status: SUCCESSFUL
# ################################################################
# test: 045
# format: Select( table=>["t1","t2"], fields => [ "t1.a","t2.b" ], where => [ 't1.a' => 't2.b' ] )
# rc: 0
# result: SELECT t1.a, t2.b FROM t1, t2 WHERE t1.a = t2.b
# status: SUCCESSFUL
# ################################################################
# test: 046
# format: Select( table=>"t1", fields => [ {"a"=>"aa"} ], where => [ 'a' => '0' ] )
# rc: 0
# result: SELECT a aa FROM t1 WHERE a = '0'
# status: SUCCESSFUL
# ################################################################
# test: 047
# format: Select( table=>"t1", fields => [ {"t1.a"=>"aa"} ], where => [ 't1.a' => '0' ] )
# rc: 0
# result: SELECT t1.a aa FROM t1 WHERE t1.a = '0'
# status: SUCCESSFUL
# ################################################################
# test: 048
# format: Select( table=>["t1","t2"], fields => [ {"t1.a"=>"aa"}, {"t2.b"=>"bb"} ], where => [ 't1.a' => 't2.b' ] )
# rc: 0
# result: SELECT t1.a aa, t2.b bb FROM t1, t2 WHERE t1.a = t2.b
# status: SUCCESSFUL
# ################################################################
# test: 049
# format: Select( table=>"t1", fields => [ {"sum(a)"=>"a1"}, {"sum(t1.a)"=>"a2"}, {"\sum(a)"=>"a3"} ], where => [ 'a' => '0' ] )
# rc: 0
# result: SELECT sum(a) a1, sum(t1.a) a2, sum(a) a3 FROM t1 WHERE a = '0'
# status: SUCCESSFUL
# ################################################################
# test: 050
# format: SelectCursor( table=>"t1", fields => [ "a","b","c"], cursor_info => \%cursor , cursor_key=>"a", cursor_command=>SQL_SIMPLE_CURSOR_TOP, limit=>100 )
# rc: 0
# note: Command=TOP, Cursor is empty
# result: SELECT a, b, c FROM t1 ORDER BY a ASC LIMIT 100
# status: SUCCESSFUL
# ################################################################
# test: 051
# format: SelectCursor( table=>"t1", fields => [ "a","b","c"], cursor_info => \%cursor , cursor_key=>"a", cursor_command=>SQL_SIMPLE_CURSOR_NEXT, limit=>100 )
# rc: 0
# note: Command=NEXT, Cursor is empty
# result: SELECT a, b, c FROM t1 ORDER BY a ASC LIMIT 100
# status: SUCCESSFUL
# ################################################################
# test: 052
# format: SelectCursor( table=>"t1", fields => [ "a","b","c"], cursor_info => \%cursor , cursor_key=>"a", cursor_command=>SQL_SIMPLE_CURSOR_BACK, limit=>100 )
# rc: 0
# note: Command=BACK, Cursor is empty
# result: SELECT a, b, c FROM t1 ORDER BY a DESC LIMIT 100
# status: SUCCESSFUL
# ################################################################
# test: 053
# format: SelectCursor( table=>"t1", fields => [ "a","b","c"], cursor_info => \%cursor , cursor_key=>"a", cursor_command=>SQL_SIMPLE_CURSOR_NEXT, limit=>100 )
# rc: 0
# note: Command=NEXT, Cursor is first(1) and last(100)
# result: SELECT a, b, c FROM t1 WHERE a > '100' ORDER BY a ASC LIMIT 100
# status: SUCCESSFUL
# ################################################################
# test: 054
# format: SelectCursor( table=>"t1", fields => [ "a","b","c"], cursor_info => \%cursor , cursor_key=>"a", cursor_command=>SQL_SIMPLE_CURSOR_BACK, limit=>100 )
# rc: 0
# note: Command=BACK, Cursor is first(101) and last(200)
# result: SELECT a, b, c FROM t1 WHERE a < '101' ORDER BY a DESC LIMIT 100
# status: SUCCESSFUL
# ################################################################
# test: 055
# format: SelectCursor( table=>"t1", fields => [ "a","b","c"], cursor_info => \%cursor , cursor_key=>"a", cursor_command=>SQL_SIMPLE_CURSOR_RELOAD, limit=>100 )
# rc: 0
# note: Command=RELOAD, Cursor is first(1) and last(100)
# result: SELECT a, b, c FROM t1 WHERE a > '1' ORDER BY a ASC LIMIT 100
# status: SUCCESSFUL
# ################################################################
# test: 056
# format: SelectCursor( table=>"t1", fields => [ "a","b","c"], cursor_info => \%cursor , cursor_key=>"a", cursor_command=>SQL_SIMPLE_CURSOR_LAST, limit=>100 )
# rc: 0
# note: Command=LAST, Cursor is first(1) and last(100)
# result: SELECT a, b, c FROM t1 ORDER BY a DESC LIMIT 100
# status: SUCCESSFUL
# ################################################################
# test: 057
# format: SelectCursor( table=>"t1", fields => [ "a","b","c"], cursor_info => \%cursor , cursor_key=>"a", cursor_command=>SQL_SIMPLE_CURSOR_TOP, limit=>0 )
# rc: 0
# note: Command=TOP, Limit is ZERO
# result: SELECT a, b, c FROM t1 ORDER BY a ASC
# status: SUCCESSFUL
# ################################################################
# test: 060
# format: Select( table=>"t1", fields => [ "distinct", "a" ] )
# rc: 0
# note: Select with DISTINCT array sequence
# result: SELECT DISTINCT a FROM t1
# status: SUCCESSFUL
# ################################################################
# test: 061
# format: Select( table=>"t1", fields => [ "distinct" => "a" ] )
# rc: 0
# note: Select with DISTINCT based hash
# result: SELECT DISTINCT a FROM t1
# status: SUCCESSFUL
# ################################################################
# test: 062
# format: Select( table=>"t1", fields => [ "count(*)" ] )
# rc: 0
# result: SELECT count(*) FROM t1
# status: SUCCESSFUL
# ################################################################
# test: 063
# format: Select( table=>"t1", fields => [ "max(t1.a)" ] )
# rc: 0
# result: SELECT max(t1.a) FROM t1
# status: SUCCESSFUL
# ################################################################
# test: 064
# format: Select( table=>"t1", fields => [ "max(a)" ] )
# rc: 0
# result: SELECT max(a) FROM t1
# status: SUCCESSFUL
# ################################################################
# test: 065
# format: Select( table=>"t1", fields => [ "substr(a,1,8)" ] )
# rc: 0
# result: SELECT substr(a,1,8) FROM t1
# status: SUCCESSFUL
# ################################################################
# test: 066
# format: Select( table=>"t1", fields => [ "\aaa.bbb.ccc" ] )
# rc: 0
# result: SELECT aaa.bbb.ccc FROM t1
# status: SUCCESSFUL
# ################################################################
# test: 067
# format: Select( table=>"t1", fields => [ "distinct","\aaa.bbb.ccc" ] )
# rc: 0
# result: SELECT DISTINCT aaa.bbb.ccc FROM t1
# status: SUCCESSFUL
# ################################################################
# test: 070
# format: Select( table=>["t1","t2"], fields => [ "t1.a","t2.b" ], where => [ 't1.a' => 't2.b' ], sql_save=>1 )
# rc: 0
# note: SQL_SAVE enabled
# result: SELECT t1.a, t2.b FROM t1, t2 WHERE t1.a = t2.b
# savefile: /tmp/2023/202310/20231009/sql.teste.20231009.36747.1
# savefile: removed
# status: SUCCESSFUL
# ################################################################
# test: 071
# format: Select( table=>"t1", order_by => "t1.a" )
# rc: 0
# result: SELECT * FROM t1 ORDER BY t1.a
# status: SUCCESSFUL
# ################################################################
# test: 072
# format: Select( table=>"t1", order_by => [ {"t1.a" => "asc"} ] )
# rc: 0
# result: SELECT * FROM t1 ORDER BY t1.a ASC
# status: SUCCESSFUL
# ################################################################
# test: 073
# format: Select( table=>"t1", order_by => [ {"t1.a" => "desc"} ] )
# rc: 0
# result: SELECT * FROM t1 ORDER BY t1.a DESC
# status: SUCCESSFUL
# ################################################################
# test: 074
# format: Select( table=>"t1", order_by => [ "t1.a", "t1.b" ] )
# rc: 0
# result: SELECT * FROM t1 ORDER BY t1.a, t1.b
# status: SUCCESSFUL
# ################################################################
# test: 075
# format: Select( table=>"t1", order_by => [ {"t1.a" => "asc"}, "t1.b" ] )
# rc: 0
# result: SELECT * FROM t1 ORDER BY t1.a ASC, t1.b
# status: SUCCESSFUL
# ################################################################
# test: 076
# format: Select( table=>"t1", order_by => [ "t1.a", {"t1.b"=>"desc"} ] )
# rc: 0
# result: SELECT * FROM t1 ORDER BY t1.a, t1.b DESC
# status: SUCCESSFUL
# ################################################################
# test: 077
# format: Select( table=>"t1", order_by => {"t1.b"=>"desc"} )
# rc: 0
# result: SELECT * FROM t1 ORDER BY t1.b DESC
# status: SUCCESSFUL
# ################################################################
# 
# To see the input options used to create the 'where' clause, rerun the test with:
# 
# export SQL_SIMPLE_SQL_SHOW_OK=1
# 
t/testSQL.t .... ok
# 
# ################################################################
# result: id = 'info'
# test: 101, SUCCESSFUL
# ################################################################
# result: id = 'info'
# test: 102, SUCCESSFUL
# ################################################################
# result: id != 'info'
# test: 103, SUCCESSFUL
# ################################################################
# result: id < 'info'
# test: 104, SUCCESSFUL
# ################################################################
# result: id > 'info'
# test: 105, SUCCESSFUL
# ################################################################
# result: id LIKE 'info%'
# test: 106, SUCCESSFUL
# ################################################################
# result: id LIKE '%info%'
# test: 107, SUCCESSFUL
# ################################################################
# result: id LIKE '%info'
# test: 108, SUCCESSFUL
# ################################################################
# result: id LIKE 'info'
# test: 109, SUCCESSFUL
# ################################################################
# result: id IS NULL
# test: 110, SUCCESSFUL
# ################################################################
# result: id NOT NULL
# test: 111, SUCCESSFUL
# ################################################################
# result: id IN ('info1','info2')
# test: 112, SUCCESSFUL
# ################################################################
# result: id NOT IN ('info1','info2')
# test: 113, SUCCESSFUL
# ################################################################
# result: id BETWEEN ('info1','info2')
# test: 114, SUCCESSFUL
# ################################################################
# result: id NOT BETWEEN ('info1','info2')
# test: 115, SUCCESSFUL
# ################################################################
# result: id = 'info' AND id = 'info2' AND no = 'no1' AND no = 'no2'
# test: 120, SUCCESSFUL
# ################################################################
# result: id = 'info' AND id = 'info2' OR no = 'no1' AND no = 'no2'
# test: 121, SUCCESSFUL
# ################################################################
# result: t1.id = t2.id
# test: 200, SUCCESSFUL
# ################################################################
# result: t1.id = t2.id
# test: 201, SUCCESSFUL
# ################################################################
# result: t1.id != t2.id
# test: 202, SUCCESSFUL
# ################################################################
# result: t1.id = t2.id AND t1.id = t3.id
# test: 210, SUCCESSFUL
# ################################################################
# result: t1.id = t2.id AND t1.id = t3.id
# test: 211, SUCCESSFUL
# ################################################################
# result: t1.id != t2.id AND t1.id != t3.id
# test: 212, SUCCESSFUL
# ################################################################
# result: t1.id = t2.id OR t1.id = t3.id
# test: 213, SUCCESSFUL
# ################################################################
# result: t1.id = t2.id AND t1.id BETWEEN ('1234','5678') AND (t1.id != '0' OR t2.id != '0')
# test: 214, SUCCESSFUL
# ################################################################
# result: (id = '1' AND id = '2') AND (no = '3' AND no = '4')
# test: 220, SUCCESSFUL
# ################################################################
# result: (id LIKE '1%' OR id LIKE '2%') AND (no LIKE '%3' OR no LIKE '%4')
# test: 221, SUCCESSFUL
# ################################################################
# result: (id NOT LIKE '1%' AND id NOT LIKE '2%') AND (no NOT LIKE '%3' AND no NOT LIKE '%4')
# test: 222, SUCCESSFUL
# ################################################################
# result: (id NOT LIKE '1%' AND id NOT LIKE '2%') OR (no NOT LIKE '%3' AND no NOT LIKE '%4')
# test: 223, SUCCESSFUL
# ################################################################
# result: id NOT NULL OR no IS NULL
# test: 224, SUCCESSFUL
# ################################################################
# result: ((a = '1' AND b = '2') OR (c = '3' AND d = '4')) AND e = '5'
# test: 225, SUCCESSFUL
# ################################################################
# result: a = concat(a,'abc')
# test: 230, SUCCESSFUL
# ################################################################
# result: a != concat(a,'abc')
# test: 231, SUCCESSFUL
# 
# To see the input options used to create the 'where' clause, rerun the test with:
# 
# export SQL_SIMPLE_WHERE_SHOW_OK=1
# 
t/testWhere.t .. ok
All tests successful.
Files=3, Tests=5,  0 wallclock secs ( 0.04 usr  0.03 sys +  0.53 cusr  0.29 csys =  0.89 CPU)
Result: PASS

------------------------------
PREREQUISITES
------------------------------

Prerequisite modules loaded:

requires:

    Module              Need Have    
    ------------------- ---- --------
    Date::Calc          0    6.4     
    DBI                 0    1.643   
    File::Path          0    2.18    
    File::Spec          0    3.88    
    IO::File            0    1.52    
    JSON                0    4.10    
    Sys::Syslog         0    0.36    

build_requires:

    Module              Need Have    
    ------------------- ---- --------
    DBD::SQLite         0    1.72    
    Test::More          0    1.302195

configure_requires:

    Module              Need Have    
    ------------------- ---- --------
    ExtUtils::MakeMaker 0    7.70    


------------------------------
ENVIRONMENT AND OTHER CONTEXT
------------------------------

Environment variables:

    AUTOMATED_TESTING = 1
    PATH = /home/njh/perl5/perlbrew/bin:/home/njh/perl5/perlbrew/perls/perl-5.38.0-clang/bin:/home/njh/perl5/perlbrew/bin:/home/njh/src/njh/smoker/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11R6/bin:/usr/local/bin:/usr/local/sbin
    PERL5LIB = /home/njh/.cpan/build/Date-Calc-XS-6.4-0/blib/arch:/home/njh/.cpan/build/Date-Calc-XS-6.4-0/blib/lib:/home/njh/.cpan/build/Date-Calc-6.4-0/blib/arch:/home/njh/.cpan/build/Date-Calc-6.4-0/blib/lib:/home/njh/.cpan/build/Bit-Vector-7.4-0/blib/arch:/home/njh/.cpan/build/Bit-Vector-7.4-0/blib/lib:/home/njh/.cpan/build/Carp-Clan-6.08-0/blib/arch:/home/njh/.cpan/build/Carp-Clan-6.08-0/blib/lib:/home/njh/.cpan/build/JSON-XS-4.03-1/blib/arch:/home/njh/.cpan/build/JSON-XS-4.03-1/blib/lib:/home/njh/.cpan/build/Types-Serialiser-1.01-1/blib/arch:/home/njh/.cpan/build/Types-Serialiser-1.01-1/blib/lib:/home/njh/.cpan/build/common-sense-3.75-1/blib/arch:/home/njh/.cpan/build/common-sense-3.75-1/blib/lib:/home/njh/.cpan/build/Canary-Stability-2013-1/blib/arch:/home/njh/.cpan/build/Canary-Stability-2013-1/blib/lib:/home/njh/.cpan/build/JSON-4.10-1/blib/arch:/home/njh/.cpan/build/JSON-4.10-1/blib/lib:/home/njh/.cpan/build/Getopt-Long-Descriptive-0.111-1/blib/arch:/home/njh/.cpan/build/Getopt-Long-Descriptive-0.111-1/blib/lib:/home/njh/.cpan/build/Params-Validate-1.31-1/blib/arch:/home/njh/.cpan/build/Params-Validate-1.31-1/blib/lib:/home/njh/.cpan/build/Data-Dump-1.25-1/blib/arch:/home/njh/.cpan/build/Data-Dump-1.25-1/blib/lib:/home/njh/.cpan/build/Business-ISBN-Data-20231006.001-2/blib/arch:/home/njh/.cpan/build/Business-ISBN-Data-20231006.001-2/blib/lib
    PERL5OPT = 
    PERL5_CPANPLUS_IS_RUNNING = 31366
    PERL5_CPAN_IS_RUNNING = 31366
    PERL5_CPAN_IS_RUNNING_IN_RECURSION = 5258,31366
    PERLBREW_LIB = 
    PERLBREW_MANPATH = /home/njh/perl5/perlbrew/perls/perl-5.38.0-clang/man
    PERLBREW_PATH = /home/njh/perl5/perlbrew/bin:/home/njh/perl5/perlbrew/perls/perl-5.38.0-clang/bin
    PERLBREW_PERL = perl-5.38.0-clang
    PERLBREW_ROOT = /home/njh/perl5/perlbrew
    PERLBREW_SHELLRC_VERSION = 0.98
    PERLBREW_VERSION = 0.98
    PERL_LOCAL_LIB_ROOT = 
    PERL_MM_USE_DEFAULT = 1
    PERL_USE_UNSAFE_INC = 1
    SHELL = /usr/local/bin/bash
    TMPDIR = /tmp/testwrapper.10240

Perl special variables (and OS-specific diagnostics, for MSWin32):

    $^X = /home/njh/perl5/perlbrew/perls/perl-5.38.0-clang/bin/perl5.38.0
    $UID/$EUID = 1000 / 1000
    $GID = 1000 1000 0
    $EGID = 1000 1000 0

Perl module toolchain versions installed:

    Module              Have    
    ------------------- --------
    CPAN                2.36    
    CPAN::Meta          2.150010
    Cwd                 3.89    
    ExtUtils::CBuilder  0.280238
    ExtUtils::Command   7.70    
    ExtUtils::Install   2.22    
    ExtUtils::MakeMaker 7.70    
    ExtUtils::Manifest  1.75    
    ExtUtils::ParseXS   3.51    
    File::Spec          3.88    
    JSON                4.10    
    JSON::PP            4.16    
    Module::Build       0.4234  
    Module::Signature   n/a     
    Parse::CPAN::Meta   2.150010
    Test2               1.302195
    Test::Harness       3.47    
    Test::More          1.302195
    YAML                1.30    
    YAML::Syck          1.34    
    version             0.9929  


--

Summary of my perl5 (revision 5 version 38 subversion 0) configuration:
   
  Platform:
    osname=openbsd
    osvers=7.3
    archname=OpenBSD.amd64-openbsd
    uname='openbsd vultr2.bandsman.co.uk 7.3 generic#1072 amd64 '
    config_args='-de -Dprefix=/home/njh/perl5/perlbrew/perls/perl-5.38.0-clang -Dusedevel -Dcc=clang -Accflags=-O2 -W -Wformat=2 -Wswitch -Wshadow -Wwrite-strings -Wuninitialized -Wall -pipe -fomit-frame-pointer -pedantic -D_FORTIFY_SOURCE=2 -Wpointer-arith -Wstrict-prototypes -fstack-protector -Wstack-protector -Wextra -Wbad-function-cast -Wcast-align -Wcast-qual -Wdisabled-optimization -Wendif-labels -Wfloat-equal -Wformat-nonliteral -Winline -Wmissing-declarations -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wundef -Wformat-security -ftree-vectorize -mmmx -msse -mfpmath=sse -msse2 -msse3 -mtune=native -Aeval:scriptdir=/home/njh/perl5/perlbrew/perls/perl-5.38.0-clang/bin'
    hint=recommended
    useposix=true
    d_sigaction=define
    useithreads=undef
    usemultiplicity=undef
    use64bitint=define
    use64bitall=define
    uselongdouble=undef
    usemymalloc=n
    default_inc_excludes_dot=define
  Compiler:
    cc='clang'
    ccflags ='-O2 -W -Wformat=2 -Wswitch -Wshadow -Wwrite-strings -Wuninitialized -Wall -pipe -fomit-frame-pointer -pedantic -D_FORTIFY_SOURCE=2 -Wpointer-arith -Wstrict-prototypes -fstack-protector -Wstack-protector -Wextra -Wbad-function-cast -Wcast-align -Wcast-qual -Wdisabled-optimization -Wendif-labels -Wfloat-equal -Wformat-nonliteral -Winline -Wmissing-declarations -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wundef -Wformat-security -ftree-vectorize -mmmx -msse -mfpmath=sse -msse2 -msse3 -mtune=native -fno-strict-aliasing -fstack-protector-strong -I/usr/local/include'
    optimize='-O2'
    cppflags='-O2 -W -Wformat=2 -Wswitch -Wshadow -Wwrite-strings -Wuninitialized -Wall -pipe -fomit-frame-pointer -pedantic -D_FORTIFY_SOURCE=2 -Wpointer-arith -Wstrict-prototypes -fstack-protector -Wstack-protector -Wextra -Wbad-function-cast -Wcast-align -Wcast-qual -Wdisabled-optimization -Wendif-labels -Wfloat-equal -Wformat-nonliteral -Winline -Wmissing-declarations -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wundef -Wformat-security -ftree-vectorize -mmmx -msse -mfpmath=sse -msse2 -msse3 -mtune=native -fno-strict-aliasing -fstack-protector-strong -I/usr/local/include'
    ccversion=''
    gccversion='OpenBSD Clang 13.0.0'
    gccosandvers=''
    intsize=4
    longsize=8
    ptrsize=8
    doublesize=8
    byteorder=12345678
    doublekind=3
    d_longlong=define
    longlongsize=8
    d_longdbl=define
    longdblsize=16
    longdblkind=3
    ivtype='long'
    ivsize=8
    nvtype='double'
    nvsize=8
    Off_t='off_t'
    lseeksize=8
    alignbytes=8
    prototype=define
  Linker and Libraries:
    ld='clang'
    ldflags ='-Wl,-E  -fstack-protector-strong -L/usr/local/lib'
    libpth=/usr/lib/clang/13.0.0/lib /usr/lib /usr/local/lib
    libs=-lpthread -lm -lutil -lc
    perllibs=-lpthread -lm -lutil -lc
    libc=/usr/lib/libc.so.97.0
    so=so
    useshrplib=false
    libperl=libperl.a
    gnulibc_version=''
  Dynamic Linking:
    dlsrc=dl_dlopen.xs
    dlext=so
    d_dlsymun=undef
    ccdlflags=' '
    cccdlflags='-DPIC -fPIC '
    lddlflags='-shared -fPIC  -L/usr/local/lib -fstack-protector-strong'


Characteristics of this binary (from libperl): 
  Compile-time options:
    HAS_LONG_DOUBLE
    HAS_STRTOLD
    HAS_TIMES
    PERLIO_LAYERS
    PERL_COPY_ON_WRITE
    PERL_DONT_CREATE_GVSV
    PERL_HASH_FUNC_SIPHASH13
    PERL_HASH_USE_SBOX32
    PERL_MALLOC_WRAP
    PERL_OP_PARENT
    PERL_PRESERVE_IVUV
    PERL_USE_DEVEL
    PERL_USE_SAFE_PUTENV
    USE_64_BIT_ALL
    USE_64_BIT_INT
    USE_LARGE_FILES
    USE_LOCALE
    USE_LOCALE_COLLATE
    USE_LOCALE_CTYPE
    USE_LOCALE_NUMERIC
    USE_LOCALE_TIME
    USE_PERLIO
    USE_PERL_ATOF
  Built under openbsd
  Compiled at Jul  3 2023 12:07:24
  %ENV:
    PERL5LIB="/home/njh/.cpan/build/Date-Calc-XS-6.4-0/blib/arch:/home/njh/.cpan/build/Date-Calc-XS-6.4-0/blib/lib:/home/njh/.cpan/build/Date-Calc-6.4-0/blib/arch:/home/njh/.cpan/build/Date-Calc-6.4-0/blib/lib:/home/njh/.cpan/build/Bit-Vector-7.4-0/blib/arch:/home/njh/.cpan/build/Bit-Vector-7.4-0/blib/lib:/home/njh/.cpan/build/Carp-Clan-6.08-0/blib/arch:/home/njh/.cpan/build/Carp-Clan-6.08-0/blib/lib:/home/njh/.cpan/build/JSON-XS-4.03-1/blib/arch:/home/njh/.cpan/build/JSON-XS-4.03-1/blib/lib:/home/njh/.cpan/build/Types-Serialiser-1.01-1/blib/arch:/home/njh/.cpan/build/Types-Serialiser-1.01-1/blib/lib:/home/njh/.cpan/build/common-sense-3.75-1/blib/arch:/home/njh/.cpan/build/common-sense-3.75-1/blib/lib:/home/njh/.cpan/build/Canary-Stability-2013-1/blib/arch:/home/njh/.cpan/build/Canary-Stability-2013-1/blib/lib:/home/njh/.cpan/build/JSON-4.10-1/blib/arch:/home/njh/.cpan/build/JSON-4.10-1/blib/lib:/home/njh/.cpan/build/Getopt-Long-Descriptive-0.111-1/blib/arch:/home/njh/.cpan/build/Getopt-Long-Descriptive-0.111-1/blib/lib:/home/njh/.cpan/build/Params-Validate-1.31-1/blib/arch:/home/njh/.cpan/build/Params-Validate-1.31-1/blib/lib:/home/njh/.cpan/build/Data-Dump-1.25-1/blib/arch:/home/njh/.cpan/build/Data-Dump-1.25-1/blib/lib:/home/njh/.cpan/build/Business-ISBN-Data-20231006.001-2/blib/arch:/home/njh/.cpan/build/Business-ISBN-Data-20231006.001-2/blib/lib"
    PERL5OPT=""
    PERL5_CPANPLUS_IS_RUNNING="31366"
    PERL5_CPAN_IS_RUNNING="31366"
    PERL5_CPAN_IS_RUNNING_IN_RECURSION="5258,31366"
    PERLBREW_LIB=""
    PERLBREW_MANPATH="/home/njh/perl5/perlbrew/perls/perl-5.38.0-clang/man"
    PERLBREW_PATH="/home/njh/perl5/perlbrew/bin:/home/njh/perl5/perlbrew/perls/perl-5.38.0-clang/bin"
    PERLBREW_PERL="perl-5.38.0-clang"
    PERLBREW_ROOT="/home/njh/perl5/perlbrew"
    PERLBREW_SHELLRC_VERSION="0.98"
    PERLBREW_VERSION="0.98"
    PERL_LOCAL_LIB_ROOT=""
    PERL_MM_USE_DEFAULT="1"
    PERL_USE_UNSAFE_INC="1"
  @INC:
    /home/njh/.cpan/build/Date-Calc-XS-6.4-0/blib/arch
    /home/njh/.cpan/build/Date-Calc-XS-6.4-0/blib/lib
    /home/njh/.cpan/build/Date-Calc-6.4-0/blib/arch
    /home/njh/.cpan/build/Date-Calc-6.4-0/blib/lib
    /home/njh/.cpan/build/Bit-Vector-7.4-0/blib/arch
    /home/njh/.cpan/build/Bit-Vector-7.4-0/blib/lib
    /home/njh/.cpan/build/Carp-Clan-6.08-0/blib/arch
    /home/njh/.cpan/build/Carp-Clan-6.08-0/blib/lib
    /home/njh/.cpan/build/JSON-XS-4.03-1/blib/arch
    /home/njh/.cpan/build/JSON-XS-4.03-1/blib/lib
    /home/njh/.cpan/build/Types-Serialiser-1.01-1/blib/arch
    /home/njh/.cpan/build/Types-Serialiser-1.01-1/blib/lib
    /home/njh/.cpan/build/common-sense-3.75-1/blib/arch
    /home/njh/.cpan/build/common-sense-3.75-1/blib/lib
    /home/njh/.cpan/build/Canary-Stability-2013-1/blib/arch
    /home/njh/.cpan/build/Canary-Stability-2013-1/blib/lib
    /home/njh/.cpan/build/JSON-4.10-1/blib/arch
    /home/njh/.cpan/build/JSON-4.10-1/blib/lib
    /home/njh/.cpan/build/Getopt-Long-Descriptive-0.111-1/blib/arch
    /home/njh/.cpan/build/Getopt-Long-Descriptive-0.111-1/blib/lib
    /home/njh/.cpan/build/Params-Validate-1.31-1/blib/arch
    /home/njh/.cpan/build/Params-Validate-1.31-1/blib/lib
    /home/njh/.cpan/build/Data-Dump-1.25-1/blib/arch
    /home/njh/.cpan/build/Data-Dump-1.25-1/blib/lib
    /home/njh/.cpan/build/Business-ISBN-Data-20231006.001-2/blib/arch
    /home/njh/.cpan/build/Business-ISBN-Data-20231006.001-2/blib/lib
    /home/njh/perl5/perlbrew/perls/perl-5.38.0-clang/lib/site_perl/5.38.0/OpenBSD.amd64-openbsd
    /home/njh/perl5/perlbrew/perls/perl-5.38.0-clang/lib/site_perl/5.38.0
    /home/njh/perl5/perlbrew/perls/perl-5.38.0-clang/lib/5.38.0/OpenBSD.amd64-openbsd
    /home/njh/perl5/perlbrew/perls/perl-5.38.0-clang/lib/5.38.0
    .