expr_eval v1_0 Perl 5 v5.33.2 x86_64-cygwin-thread-multi-quadmath

Status
Pass
From
Peter John Acklam (PJACKLAM)
Dist
expr_eval v1_0
Platform
Perl 5 v5.33.2 x86_64-cygwin-thread-multi-quadmath
Date
2021-01-31 14:42:28
ID
8e5f2c2f-6db5-1014-a0d2-a2e3cc2fdfbb
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 Scott,

This is a computer-generated report for expr_eval_1_0
on perl 5.33.2, created by CPAN-Reporter-1.2018.

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 "/cygdrive/c/opt/perl5/cygwin_nt-10.0/3.1.7/x86_64/perl/5.33.2/x86_64-cygwin-thread-multi-quadmath/bin/perl5.33.2.exe" "-Iblib/lib" "-Iblib/arch" test.pl

Total test count:	    150
Total test error count:	    1

----------------------------

Test:		137
Error number:	1

Expression:	"XXX" =~ ".[hjk"
Options:	<none>

check if =~ pattern is valid
(note:  format of error message may vary depending on perl version, system, etc)


Actual results:

Return type:	<NONE>
Return value:	<NONE>
Error position:	7
Error message:	Unmatched [ in regex; marked by <-- HERE in m/.[ <-- HERE hjk/ at expr_eval.pm line 1735.

Dev message:	<->
Pattern:  /.[hjk/
Unmatched [ in regex; marked by <-- HERE in m/.[ <-- HERE hjk/ at expr_eval.pm line 1735.
Token list:	<NONE>


Expected results:

Return type:	<NONE>
Return value:	<NONE>
Error position:	7
Error message:	/.[hjk/: unmatched [] in regexp
Dev message:	<->
Pattern:  /.[hjk/
/.[hjk/: unmatched [] in regexp at expr_eval.pm line 1735.
Token list:	<NONE>


----------------------------

END OF ERROR REPORT


============================================================================


Total test count:	150

----------------------------

Test:		1

Expression:	~
Options:	<none>

check for unknown character


Return type:	<NONE>
Return value:	<NONE>
Error position:	0
Error message:	unexpected character
Dev message:	character = '~'
Token list:	<NONE>


----------------------------

Test:		2

Expression:	'hello world, ' + "hello workd 2, " + `hello world 3`
Options:	'save-tokens'

check for quoted strings


Return type:	2
Return value:	hello world, hello workd 2, hello world 3
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, ''hello world, '', 3, hello world, )
    (16, '+', 24, +)
    (18, '"hello workd 2, "', 3, hello workd 2, )
    (36, '+', 24, +)
    (38, '`hello world 3`', 3, hello world 3)
    (53, '', 1, )
    (53, '', 1, )
End of token list


----------------------------

Test:		3

Expression:	'hello world, ' + "missing quote
Options:	<none>

check for string with missing quote


Return type:	<NONE>
Return value:	<NONE>
Error position:	18
Error message:	missing close quote
Dev message:	quote = /"/
Token list:	<NONE>


----------------------------

Test:		4

Expression:	%ignore_token%  "HERE"  %ignore_token%
Options:	'save-tokens,token-function'

check for token function ignoring token


Return type:	2
Return value:	HERE
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '%ignore_token%', 14, 'token should be ignored')
    (16, '"HERE"', 3, HERE)
    (24, '%ignore_token%', 14, 'token should be ignored')
    (38, '', 1, )
    (38, '', 1, )
End of token list


----------------------------

Test:		5

Expression:	55 + 23.0 + .25 + 0.5 + 9.25
Options:	'save-tokens'

check lexical scanning for numbers


Return type:	1
Return value:	88
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '55', 4, 55)
    (3, '+', 24, +)
    (5, '23.0', 4, 23)
    (10, '+', 24, +)
    (12, '.25', 4, 0.25)
    (16, '+', 24, +)
    (18, '0.5', 4, 0.5)
    (22, '+', 24, +)
    (24, '9.25', 4, 9.25)
    (28, '', 1, )
    (28, '', 1, )
End of token list


----------------------------

Test:		6

Expression:	1000E-2 + 2.0E+1 + .25E2 + 0.5E+1 + 9.25E+1
Options:	'save-tokens'

check lexical scanning for numbers with scientific notation


Return type:	1
Return value:	152.5
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '1000E-2', 4, 10)
    (8, '+', 24, +)
    (10, '2.0E+1', 4, 20)
    (17, '+', 24, +)
    (19, '.25E2', 4, 25)
    (25, '+', 24, +)
    (27, '0.5E+1', 4, 5)
    (34, '+', 24, +)
    (36, '9.25E+1', 4, 92.5)
    (43, '', 1, )
    (43, '', 1, )
End of token list


----------------------------

Test:		7

Expression:	0.5.
Options:	<none>

check lexical scanning for malformed number


Return type:	<NONE>
Return value:	<NONE>
Error position:	0
Error message:	incorrectly specified number
Dev message:	<NONE>
Token list:	<NONE>


----------------------------

Test:		8

Expression:	true
Options:	'save-tokens'

check for 'TRUE' boolean constant


Return type:	3
Return value:	t
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, 'true', 5, <ARRAY>)
    (4, '', 1, )
    (4, '', 1, )
End of token list


----------------------------

Test:		9

Expression:	FALSE
Options:	'save-tokens'

check for 'FALSE' boolean constant


Return type:	3
Return value:	
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, 'FALSE', 5, <ARRAY>)
    (5, '', 1, )
    (5, '', 1, )
End of token list


----------------------------

Test:		10

Expression:	6W
Options:	<none>

check lexical scanning for malformed number


Return type:	<NONE>
Return value:	<NONE>
Error position:	0
Error message:	incorrectly specified number
Dev message:	<NONE>
Token list:	<NONE>


----------------------------

Test:		11

Expression:	.7896W
Options:	<none>

check lexical scanning for malformed number


Return type:	<NONE>
Return value:	<NONE>
Error position:	0
Error message:	incorrectly specified number
Dev message:	<NONE>
Token list:	<NONE>


----------------------------

Test:		12

Expression:	%test-token%
Options:	'token-function,save-tokens'

check user token function to return a standard string data type


Return type:	2
Return value:	string from token function
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '%test-token%', 3, string from token function)
    (12, '', 1, )
    (12, '', 1, )
End of token list


----------------------------

Test:		13

Expression:	my_special_data
Options:	'token-function,save-tokens'

check user token function for returning a token for a user data type


Return type:	11
Return value:	some-special-info
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, 'my_special_data', 5, <ARRAY>)
    (15, '', 1, )
    (15, '', 1, )
End of token list


----------------------------

Test:		14

Expression:	%error-message%
Options:	'token-function'

check user token function error return


Return type:	<NONE>
Return value:	<NONE>
Error position:	0
Error message:	ERROR MESSAGE
Dev message:	function is code
Token list:	<NONE>


----------------------------

Test:		15

Expression:	%execution-error%
Options:	'token-function'

check user token function execution error
(note:  format of error message may vary depending on perl version, system, etc)


Return type:	<NONE>
Return value:	<NONE>
Error position:	0
Error message:	system error
Dev message:	<->
function is code
Illegal division by zero at test.pl line 256.
Token list:	<NONE>


----------------------------

Test:		16

Expression:	sym1 + ", " + sym2
Options:	'save-tokens'

check retrieving symbols from symbol tables


Return type:	2
Return value:	symbol table 1, symbol table 2
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, 'sym1', 2, sym1)
    (5, '+', 24, +)
    (7, '", "', 3, , )
    (12, '+', 24, +)
    (14, 'sym2', 2, sym2)
    (18, '', 1, )
    (18, '', 1, )
End of token list


----------------------------

Test:		17

Expression:	"XXX" + sym3
Options:	<none>

check for unknown symbol


Return type:	<NONE>
Return value:	<NONE>
Error position:	11
Error message:	unrecognized identifier
Dev message:	<->
Token information:
    Position:	8
    String:	sym3
    Type:	2
    Value:	sym3
Token list:	<NONE>


----------------------------

Test:		18

Expression:	5 + -3
Options:	'save-tokens'

check for unary negative


Return type:	1
Return value:	2
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '5', 4, 5)
    (2, '+', 24, +)
    (4, '-', 24, -)
    (5, '3', 4, 3)
    (6, '', 1, )
    (6, '', 1, )
End of token list


----------------------------

Test:		19

Expression:	- -3
Options:	'save-tokens'

check for double unary negative


Return type:	1
Return value:	3
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '-', 24, -)
    (2, '-', 24, -)
    (3, '3', 4, 3)
    (4, '', 1, )
    (4, '', 1, )
End of token list


----------------------------

Test:		20

Expression:	5 + -"XXX"
Options:	<none>

check for unary negative acting on non-numeric


Return type:	<NONE>
Return value:	<NONE>
Error position:	4
Error message:	numeric value expected next
Dev message:	<->
Value information:
    Type:	2  (string)
    Value:	XXX
Token list:	<NONE>


----------------------------

Test:		21

Expression:	! true
Options:	'save-tokens'

check for NOT on true


Return type:	3
Return value:	
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '!', 13, !)
    (2, 'true', 5, <ARRAY>)
    (6, '', 1, )
    (6, '', 1, )
End of token list


----------------------------

Test:		22

Expression:	! false
Options:	'save-tokens'

check for NOT on false


Return type:	3
Return value:	t
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '!', 13, !)
    (2, 'false', 5, <ARRAY>)
    (7, '', 1, )
    (7, '', 1, )
End of token list


----------------------------

Test:		23

Expression:	! ! true
Options:	'save-tokens'

check for double NOT


Return type:	3
Return value:	t
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '!', 13, !)
    (2, '!', 13, !)
    (4, 'true', 5, <ARRAY>)
    (8, '', 1, )
    (8, '', 1, )
End of token list


----------------------------

Test:		24

Expression:	! "XXX"
Options:	<none>

check for NOT acting on non-boolean


Return type:	<NONE>
Return value:	<NONE>
Error position:	0
Error message:	boolean value expected next
Dev message:	<->
Value information:
    Type:	2  (string)
    Value:	XXX
Token list:	<NONE>


----------------------------

Test:		25

Expression:	%unary-operator% "XXX"
Options:	'token-function'

check for special unary operator without operator function


Return type:	<NONE>
Return value:	<NONE>
Error position:	15
Error message:	operator not evaluated by function
Dev message:	<->
No function specified.
Token information:
    Position:	0
    String:	%unary-operator%
    Type:	13
    Value:	%unary-operator%
Token list:	<NONE>


----------------------------

Test:		26

Expression:	%unary-operator% "XXX"
Options:	'token-function,operator-function,save-tokens'

check for special unary operator


Return type:	2
Return value:	string from unary operation
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '%unary-operator%', 13, %unary-operator%)
    (17, '"XXX"', 3, XXX)
    (22, '', 1, )
    (22, '', 1, )
End of token list


----------------------------

Test:		27

Expression:	%unary-operator% 100
Options:	'token-function,operator-function'

check for special unary operator acting on non-string


Return type:	<NONE>
Return value:	<NONE>
Error position:	15
Error message:	string expected after operator
Dev message:	<->
function is code
Token information:
    Position:	0
    String:	%unary-operator%
    Type:	13
    Value:	%unary-operator%
Token list:	<NONE>


----------------------------

Test:		28

Expression:	%unary-operator-error% "XXX"
Options:	'token-function,operator-function'

check for operator function error
(note:  format of error message may vary depending on perl version, system, etc)


Return type:	<NONE>
Return value:	<NONE>
Error position:	21
Error message:	system error
Dev message:	<->
function is code
Token information:
    Position:	0
    String:	%unary-operator-error%
    Type:	13
    Value:	%unary-operator-error%
Illegal division by zero at test.pl line 334.
Token list:	<NONE>


----------------------------

Test:		29

Expression:	( 5 + 6 )
Options:	'save-tokens'

check for parentheses


Return type:	1
Return value:	11
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '(', 6, ()
    (2, '5', 4, 5)
    (4, '+', 24, +)
    (6, '6', 4, 6)
    (8, ')', 7, ))
    (9, '', 1, )
    (9, '', 1, )
End of token list


----------------------------

Test:		30

Expression:	( 5 + 6
Options:	<none>

check for missing close parenthesis


Return type:	<NONE>
Return value:	<NONE>
Error position:	7
Error message:	unexpected end found
Dev message:	<NONE>
Token list:	<NONE>


----------------------------

Test:		31

Expression:	( 5 + 6 ,
Options:	<none>

check for missing close parenthesis


Return type:	<NONE>
Return value:	<NONE>
Error position:	8
Error message:	unexpected element found
Dev message:	<->
Token information:
    Position:	8
    String:	,
    Type:	8
    Value:	,
Token list:	<NONE>


----------------------------

Test:		32

Expression:	CONCAT("555", 8, 7, "9"
Options:	'function-handler'

check for missing closing function parenthesis


Return type:	<NONE>
Return value:	<NONE>
Error position:	22
Error message:	unexpected end found
Dev message:	<NONE>
Token list:	<NONE>


----------------------------

Test:		33

Expression:	CONCAT( , "555", 8, 7, "9")
Options:	'function-handler'

check for empty arguement


Return type:	<NONE>
Return value:	<NONE>
Error position:	8
Error message:	unexpected element found
Dev message:	<->
Token information:
    Position:	8
    String:	,
    Type:	8
    Value:	,
Token list:	<NONE>


----------------------------

Test:		34

Expression:	CONCAT("555", 8, 7, "9")
Options:	<none>

check for no processing function


Return type:	<NONE>
Return value:	<NONE>
Error position:	23
Error message:	no function declared for handling function calls
Dev message:	function identifier = 'CONCAT'
Token list:	<NONE>


----------------------------

Test:		35

Expression:	CONCAT("555", 8, 7, "9")
Options:	'function-handler,save-tokens'

check for function call


Return type:	2
Return value:	555, 8, 7, 9
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, 'CONCAT', 12, CONCAT)
    (6, '(', 6, ()
    (7, '"555"', 3, 555)
    (12, ',', 8, ,)
    (14, '8', 4, 8)
    (15, ',', 8, ,)
    (17, '7', 4, 7)
    (18, ',', 8, ,)
    (20, '"9"', 3, 9)
    (23, ')', 7, ))
    (24, '', 1, )
    (24, '', 1, )
End of token list


----------------------------

Test:		36

Expression:	CONCAT("555", true, 7, "9")
Options:	'function-handler'

check for function detecting arguement error


Return type:	<NONE>
Return value:	<NONE>
Error position:	26
Error message:	boolean arguement found
Dev message:	<->
function identifier = 'CONCAT'
function is code
Token list:	<NONE>


----------------------------

Test:		37

Expression:	UNKNOWN("555", true, 7, "9")
Options:	'function-handler'

check for function being unknown


Return type:	<NONE>
Return value:	<NONE>
Error position:	27
Error message:	function may be unknown (no value returned for function call)
Dev message:	<->
function identifier = 'UNKNOWN'
function is code
Token list:	<NONE>


----------------------------

Test:		38

Expression:	5 ? 5 : 5
Options:	<none>

check for ternary function without boolean


Return type:	<NONE>
Return value:	<NONE>
Error position:	2
Error message:	boolean value expected before
Dev message:	<->
Token information:
    Position:	2
    String:	?
    Type:	9
    Value:	?
Token list:	<NONE>


----------------------------

Test:		39

Expression:	true ? 5
Options:	<none>

check for ternary function without colon


Return type:	<NONE>
Return value:	<NONE>
Error position:	<NONE>
Error message:	unexpected end found
Dev message:	<NONE>
Token list:	<NONE>


----------------------------

Test:		40

Expression:	true ? 5 , 5
Options:	<none>

check for ternary function without colon


Return type:	<NONE>
Return value:	<NONE>
Error position:	9
Error message:	unexpected element found
Dev message:	<->
Token information:
    Position:	9
    String:	,
    Type:	8
    Value:	,
Token list:	<NONE>


----------------------------

Test:		41

Expression:	true ? 5 : 6
Options:	'save-tokens'

check for ternary function with true boolean


Return type:	1
Return value:	5
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, 'true', 5, <ARRAY>)
    (5, '?', 9, ?)
    (7, '5', 4, 5)
    (9, ':', 10, :)
    (11, '6', 4, 6)
    (12, '', 1, )
    (12, '', 1, )
    (12, '', 1, )
End of token list


----------------------------

Test:		42

Expression:	false ? 5 : 6
Options:	'save-tokens'

check for ternary function with false boolean


Return type:	1
Return value:	6
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, 'false', 5, <ARRAY>)
    (6, '?', 9, ?)
    (8, '5', 4, 5)
    (10, ':', 10, :)
    (12, '6', 4, 6)
    (13, '', 1, )
    (13, '', 1, )
    (13, '', 1, )
End of token list


----------------------------

Test:		43

Expression:	DIVBYZERO("555", true, 7, "9")
Options:	'function-handler'

check for execution error while handling function call
(note:  format of error message may vary depending on perl version, system, etc)


Return type:	<NONE>
Return value:	<NONE>
Error position:	29
Error message:	system error
Dev message:	<->
function identifier = 'DIVBYZERO'
function is code
Illegal division by zero at test.pl line 405.
Token list:	<NONE>


----------------------------

Test:		44

Expression:	5 "XXX"
Options:	<none>

check for unexpected element


Return type:	<NONE>
Return value:	<NONE>
Error position:	6
Error message:	unexpected element found
Dev message:	<->
Token information:
    Position:	2
    String:	"XXX"
    Type:	3
    Value:	XXX
Token list:	<NONE>


----------------------------

Test:		45

Expression:	5 ,
Options:	<none>

check for unexpected element


Return type:	<NONE>
Return value:	<NONE>
Error position:	2
Error message:	unexpected element found
Dev message:	<->
Token information:
    Position:	2
    String:	,
    Type:	8
    Value:	,
Token list:	<NONE>


----------------------------

Test:		46

Expression:	5 +
Options:	<none>

check for unexpected end


Return type:	<NONE>
Return value:	<NONE>
Error position:	3
Error message:	unexpected end found
Dev message:	<NONE>
Token list:	<NONE>


----------------------------

Test:		47

Expression:	5 + ||
Options:	<none>

check for unexpected element


Return type:	<NONE>
Return value:	<NONE>
Error position:	5
Error message:	unexpected element found
Dev message:	<->
Token information:
    Position:	4
    String:	||
    Type:	21
    Value:	||
Token list:	<NONE>


----------------------------

Test:		48

Expression:	5 )
Options:	<none>

check for unexpected element


Return type:	<NONE>
Return value:	<NONE>
Error position:	2
Error message:	unexpected element found
Dev message:	<->
Token information:
    Position:	2
    String:	)
    Type:	7
    Value:	)
Token list:	<NONE>


----------------------------

Test:		49

Expression:	8 + 3(
Options:	<none>

check for unexpected element


Return type:	<NONE>
Return value:	<NONE>
Error position:	5
Error message:	unexpected element found
Dev message:	<->
Token information:
    Position:	5
    String:	(
    Type:	6
    Value:	(
Token list:	<NONE>


----------------------------

Test:		50

Expression:	"Hello, " + "World"
Options:	'save-tokens'

check for string concatenation


Return type:	2
Return value:	Hello, World
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '"Hello, "', 3, Hello, )
    (10, '+', 24, +)
    (12, '"World"', 3, World)
    (19, '', 1, )
    (19, '', 1, )
End of token list


----------------------------

Test:		51

Expression:	"Hello, " + 53.25
Options:	'save-tokens'

check for concatenating string followed by number


Return type:	2
Return value:	Hello, 53.25
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '"Hello, "', 3, Hello, )
    (10, '+', 24, +)
    (12, '53.25', 4, 53.25)
    (17, '', 1, )
    (17, '', 1, )
End of token list


----------------------------

Test:		52

Expression:	"Hello, " + true
Options:	<none>

check for trying to concatenate string followed by non-string/non-number


Return type:	<NONE>
Return value:	<NONE>
Error position:	10
Error message:	string or number expected after operator
Dev message:	<->
Token information:
    Position:	10
    String:	+
    Type:	24
    Value:	+
Value information:
    Type:	3  (bool)
    Value:	t
Token list:	<NONE>


----------------------------

Test:		53

Expression:	32 + "world"
Options:	<none>

check for trying to concatenate number followed by string


Return type:	<NONE>
Return value:	<NONE>
Error position:	3
Error message:	number expected after operator
Dev message:	<->
Token information:
    Position:	3
    String:	+
    Type:	24
    Value:	+
Value information:
    Type:	2  (string)
    Value:	world
Token list:	<NONE>


----------------------------

Test:		54

Expression:	true + "world"
Options:	<none>

check for trying to concatenate non-string/non-number followed by string


Return type:	<NONE>
Return value:	<NONE>
Error position:	5
Error message:	string or number expected before operator
Dev message:	<->
Token information:
    Position:	5
    String:	+
    Type:	24
    Value:	+
Value information:
    Type:	3  (bool)
    Value:	t
Token list:	<NONE>


----------------------------

Test:		55

Expression:	"Hello, " + 25 * 5
Options:	'save-tokens'

check precedence handling so multiplication is followed by concatentation


Return type:	2
Return value:	Hello, 125
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '"Hello, "', 3, Hello, )
    (10, '+', 24, +)
    (12, '25', 4, 25)
    (15, '*', 25, *)
    (17, '5', 4, 5)
    (18, '', 1, )
    (18, '', 1, )
End of token list


----------------------------

Test:		56

Expression:	5 - true
Options:	<none>

check subtraction working on number and boolean


Return type:	<NONE>
Return value:	<NONE>
Error position:	2
Error message:	number expected after operator
Dev message:	<->
Token information:
    Position:	2
    String:	-
    Type:	24
    Value:	-
Value information:
    Type:	3  (bool)
    Value:	t
Token list:	<NONE>


----------------------------

Test:		57

Expression:	true - 5
Options:	<none>

check subtraction working on boolean and number


Return type:	<NONE>
Return value:	<NONE>
Error position:	5
Error message:	number expected before operator
Dev message:	<->
Token information:
    Position:	5
    String:	-
    Type:	24
    Value:	-
Value information:
    Type:	3  (bool)
    Value:	t
Token list:	<NONE>


----------------------------

Test:		58

Expression:	34 + 49
Options:	'save-tokens'

check addition


Return type:	1
Return value:	83
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '34', 4, 34)
    (3, '+', 24, +)
    (5, '49', 4, 49)
    (7, '', 1, )
    (7, '', 1, )
End of token list


----------------------------

Test:		59

Expression:	56 - 93
Options:	'save-tokens'

check subtraction


Return type:	1
Return value:	-37
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '56', 4, 56)
    (3, '-', 24, -)
    (5, '93', 4, 93)
    (7, '', 1, )
    (7, '', 1, )
End of token list


----------------------------

Test:		60

Expression:	5 * -7
Options:	'save-tokens'

check multiplication


Return type:	1
Return value:	-35
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '5', 4, 5)
    (2, '*', 25, *)
    (4, '-', 24, -)
    (5, '7', 4, 7)
    (6, '', 1, )
    (6, '', 1, )
End of token list


----------------------------

Test:		61

Expression:	42 / -6
Options:	'save-tokens'

check division


Return type:	1
Return value:	-7
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '42', 4, 42)
    (3, '/', 25, /)
    (5, '-', 24, -)
    (6, '6', 4, 6)
    (7, '', 1, )
    (7, '', 1, )
End of token list


----------------------------

Test:		62

Expression:	45 / 0
Options:	<none>

check division by zero
(note:  format of error message may vary depending on perl version, system, etc)


Return type:	<NONE>
Return value:	<NONE>
Error position:	3
Error message:	error occurred when executing '/'
Dev message:	<->
Illegal division by zero at expr_eval.pm line 1584.
Token list:	<NONE>


----------------------------

Test:		63

Expression:	34 % 5
Options:	'save-tokens'

check modulo


Return type:	1
Return value:	4
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '34', 4, 34)
    (3, '%', 25, %)
    (5, '5', 4, 5)
    (6, '', 1, )
    (6, '', 1, )
End of token list


----------------------------

Test:		64

Expression:	45 % 0
Options:	<none>

check modulo by zero
(note:  format of error message may vary depending on perl version, system, etc)


Return type:	<NONE>
Return value:	<NONE>
Error position:	3
Error message:	error occurred when executing '%'
Dev message:	<->
Illegal modulus zero at expr_eval.pm line 1598.
Token list:	<NONE>


----------------------------

Test:		65

Expression:	25 + 6 * 8 - 64 / 8 + 4
Options:	'save-tokens'

check operation priorities


Return type:	1
Return value:	69
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '25', 4, 25)
    (3, '+', 24, +)
    (5, '6', 4, 6)
    (7, '*', 25, *)
    (9, '8', 4, 8)
    (11, '-', 24, -)
    (13, '64', 4, 64)
    (16, '/', 25, /)
    (18, '8', 4, 8)
    (20, '+', 24, +)
    (22, '4', 4, 4)
    (23, '', 1, )
    (23, '', 1, )
End of token list


----------------------------

Test:		66

Expression:	25 * 6 + 36 / 12 - 8 % 3
Options:	'save-tokens'

check operation priorities


Return type:	1
Return value:	151
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '25', 4, 25)
    (3, '*', 25, *)
    (5, '6', 4, 6)
    (7, '+', 24, +)
    (9, '36', 4, 36)
    (12, '/', 25, /)
    (14, '12', 4, 12)
    (17, '-', 24, -)
    (19, '8', 4, 8)
    (21, '%', 25, %)
    (23, '3', 4, 3)
    (24, '', 1, )
    (24, '', 1, )
End of token list


----------------------------

Test:		67

Expression:	(25 + 6) * (8 - 56) / (8 + 4)
Options:	'save-tokens'

check operation priorities being changed by parentheses


Return type:	1
Return value:	-124
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '(', 6, ()
    (1, '25', 4, 25)
    (4, '+', 24, +)
    (6, '6', 4, 6)
    (7, ')', 7, ))
    (9, '*', 25, *)
    (11, '(', 6, ()
    (12, '8', 4, 8)
    (14, '-', 24, -)
    (16, '56', 4, 56)
    (18, ')', 7, ))
    (20, '/', 25, /)
    (22, '(', 6, ()
    (23, '8', 4, 8)
    (25, '+', 24, +)
    (27, '4', 4, 4)
    (28, ')', 7, ))
    (29, '', 1, )
    (29, '', 1, )
End of token list


----------------------------

Test:		68

Expression:	25 * (8 + 36) / (12 - 7) % 3
Options:	'save-tokens'

check operation priorities being changed by parentheses


Return type:	1
Return value:	1
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '25', 4, 25)
    (3, '*', 25, *)
    (5, '(', 6, ()
    (6, '8', 4, 8)
    (8, '+', 24, +)
    (10, '36', 4, 36)
    (12, ')', 7, ))
    (14, '/', 25, /)
    (16, '(', 6, ()
    (17, '12', 4, 12)
    (20, '-', 24, -)
    (22, '7', 4, 7)
    (23, ')', 7, ))
    (25, '%', 25, %)
    (27, '3', 4, 3)
    (28, '', 1, )
    (28, '', 1, )
End of token list


----------------------------

Test:		69

Expression:	"xxx" || true
Options:	<none>

check non-boolean before boolean operator


Return type:	<NONE>
Return value:	<NONE>
Error position:	7
Error message:	boolean value expected before operator
Dev message:	<->
Token information:
    Position:	6
    String:	||
    Type:	21
    Value:	||
Value information:
    Type:	2  (string)
    Value:	xxx
Token list:	<NONE>


----------------------------

Test:		70

Expression:	true && "xxx"
Options:	<none>

check non-boolean after boolean operator


Return type:	<NONE>
Return value:	<NONE>
Error position:	6
Error message:	boolean value expected after operator
Dev message:	<->
Token information:
    Position:	5
    String:	&&
    Type:	22
    Value:	&&
Value information:
    Type:	2  (string)
    Value:	xxx
Token list:	<NONE>


----------------------------

Test:		71

Expression:	true && true
Options:	'save-tokens'

check &&


Return type:	3
Return value:	t
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, 'true', 5, <ARRAY>)
    (5, '&&', 22, &&)
    (8, 'true', 5, <ARRAY>)
    (12, '', 1, )
    (12, '', 1, )
End of token list


----------------------------

Test:		72

Expression:	false && true
Options:	'save-tokens'

check &&


Return type:	3
Return value:	
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, 'false', 5, <ARRAY>)
    (6, '&&', 22, &&)
    (9, 'true', 5, <ARRAY>)
    (13, '', 1, )
    (13, '', 1, )
End of token list


----------------------------

Test:		73

Expression:	true && false
Options:	'save-tokens'

check &&


Return type:	3
Return value:	
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, 'true', 5, <ARRAY>)
    (5, '&&', 22, &&)
    (8, 'false', 5, <ARRAY>)
    (13, '', 1, )
    (13, '', 1, )
End of token list


----------------------------

Test:		74

Expression:	false && false
Options:	'save-tokens'

check &&


Return type:	3
Return value:	
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, 'false', 5, <ARRAY>)
    (6, '&&', 22, &&)
    (9, 'false', 5, <ARRAY>)
    (14, '', 1, )
    (14, '', 1, )
End of token list


----------------------------

Test:		75

Expression:	true || true
Options:	'save-tokens'

check ||


Return type:	3
Return value:	t
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, 'true', 5, <ARRAY>)
    (5, '||', 21, ||)
    (8, 'true', 5, <ARRAY>)
    (12, '', 1, )
    (12, '', 1, )
End of token list


----------------------------

Test:		76

Expression:	false || true
Options:	'save-tokens'

check ||


Return type:	3
Return value:	t
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, 'false', 5, <ARRAY>)
    (6, '||', 21, ||)
    (9, 'true', 5, <ARRAY>)
    (13, '', 1, )
    (13, '', 1, )
End of token list


----------------------------

Test:		77

Expression:	true || false
Options:	'save-tokens'

check ||


Return type:	3
Return value:	t
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, 'true', 5, <ARRAY>)
    (5, '||', 21, ||)
    (8, 'false', 5, <ARRAY>)
    (13, '', 1, )
    (13, '', 1, )
End of token list


----------------------------

Test:		78

Expression:	false || false
Options:	'save-tokens'

check ||


Return type:	3
Return value:	
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, 'false', 5, <ARRAY>)
    (6, '||', 21, ||)
    (9, 'false', 5, <ARRAY>)
    (14, '', 1, )
    (14, '', 1, )
End of token list


----------------------------

Test:		79

Expression:	true || true && false
Options:	'save-tokens'

check boolean precedence order


Return type:	3
Return value:	t
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, 'true', 5, <ARRAY>)
    (5, '||', 21, ||)
    (8, 'true', 5, <ARRAY>)
    (13, '&&', 22, &&)
    (16, 'false', 5, <ARRAY>)
    (21, '', 1, )
    (21, '', 1, )
End of token list


----------------------------

Test:		80

Expression:	false && (true || true)
Options:	'save-tokens'

check boolean order with parentheses


Return type:	3
Return value:	
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, 'false', 5, <ARRAY>)
    (6, '&&', 22, &&)
    (9, '(', 6, ()
    (10, 'true', 5, <ARRAY>)
    (15, '||', 21, ||)
    (18, 'true', 5, <ARRAY>)
    (22, ')', 7, ))
    (23, '', 1, )
    (23, '', 1, )
End of token list


----------------------------

Test:		81

Expression:	(true and not false) or false
Options:	<none>

check boolean keywords for option not set


Return type:	<NONE>
Return value:	<NONE>
Error position:	8
Error message:	unexpected element found
Dev message:	<->
Token information:
    Position:	6
    String:	and
    Type:	2
    Value:	and
Token list:	<NONE>


----------------------------

Test:		82

Expression:	(true and not false) or false
Options:	'boolean-keywords,save-tokens'

check boolean keywords for option not set


Return type:	3
Return value:	t
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '(', 6, ()
    (1, 'true', 5, <ARRAY>)
    (6, 'and', 22, &&)
    (10, 'not', 13, !)
    (14, 'false', 5, <ARRAY>)
    (19, ')', 7, ))
    (21, 'or', 21, ||)
    (24, 'false', 5, <ARRAY>)
    (29, '', 1, )
    (29, '', 1, )
End of token list


----------------------------

Test:		83

Expression:	true != "xxx"
Options:	<none>

check non-boolean after boolean operator


Return type:	<NONE>
Return value:	<NONE>
Error position:	6
Error message:	boolean value expected after operator
Dev message:	<->
Token information:
    Position:	5
    String:	!=
    Type:	23
    Value:	!=
Value information:
    Type:	2  (string)
    Value:	xxx
Token list:	<NONE>


----------------------------

Test:		84

Expression:	true != true
Options:	'save-tokens'

check !=


Return type:	3
Return value:	
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, 'true', 5, <ARRAY>)
    (5, '!=', 23, !=)
    (8, 'true', 5, <ARRAY>)
    (12, '', 1, )
    (12, '', 1, )
End of token list


----------------------------

Test:		85

Expression:	false != true
Options:	'save-tokens'

check !=


Return type:	3
Return value:	t
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, 'false', 5, <ARRAY>)
    (6, '!=', 23, !=)
    (9, 'true', 5, <ARRAY>)
    (13, '', 1, )
    (13, '', 1, )
End of token list


----------------------------

Test:		86

Expression:	true != false
Options:	'save-tokens'

check !=


Return type:	3
Return value:	t
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, 'true', 5, <ARRAY>)
    (5, '!=', 23, !=)
    (8, 'false', 5, <ARRAY>)
    (13, '', 1, )
    (13, '', 1, )
End of token list


----------------------------

Test:		87

Expression:	false != false
Options:	'save-tokens'

check !=


Return type:	3
Return value:	
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, 'false', 5, <ARRAY>)
    (6, '!=', 23, !=)
    (9, 'false', 5, <ARRAY>)
    (14, '', 1, )
    (14, '', 1, )
End of token list


----------------------------

Test:		88

Expression:	true == true
Options:	'save-tokens'

check ==


Return type:	3
Return value:	t
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, 'true', 5, <ARRAY>)
    (5, '==', 23, ==)
    (8, 'true', 5, <ARRAY>)
    (12, '', 1, )
    (12, '', 1, )
End of token list


----------------------------

Test:		89

Expression:	false == true
Options:	'save-tokens'

check ==


Return type:	3
Return value:	
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, 'false', 5, <ARRAY>)
    (6, '==', 23, ==)
    (9, 'true', 5, <ARRAY>)
    (13, '', 1, )
    (13, '', 1, )
End of token list


----------------------------

Test:		90

Expression:	true == false
Options:	'save-tokens'

check ==


Return type:	3
Return value:	
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, 'true', 5, <ARRAY>)
    (5, '==', 23, ==)
    (8, 'false', 5, <ARRAY>)
    (13, '', 1, )
    (13, '', 1, )
End of token list


----------------------------

Test:		91

Expression:	false == false
Options:	'save-tokens'

check ==


Return type:	3
Return value:	t
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, 'false', 5, <ARRAY>)
    (6, '==', 23, ==)
    (9, 'false', 5, <ARRAY>)
    (14, '', 1, )
    (14, '', 1, )
End of token list


----------------------------

Test:		92

Expression:	false && true == false
Options:	'save-tokens'

check priorities between && and ==


Return type:	3
Return value:	
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, 'false', 5, <ARRAY>)
    (6, '&&', 22, &&)
    (9, 'true', 5, <ARRAY>)
    (14, '==', 23, ==)
    (17, 'false', 5, <ARRAY>)
    (22, '', 1, )
    (22, '', 1, )
End of token list


----------------------------

Test:		93

Expression:	true || false != true
Options:	'save-tokens'

check priorities between || and !=


Return type:	3
Return value:	t
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, 'true', 5, <ARRAY>)
    (5, '||', 21, ||)
    (8, 'false', 5, <ARRAY>)
    (14, '!=', 23, !=)
    (17, 'true', 5, <ARRAY>)
    (21, '', 1, )
    (21, '', 1, )
End of token list


----------------------------

Test:		94

Expression:	(false && true) == false
Options:	'save-tokens'

check priorities between && and == with parentheses


Return type:	3
Return value:	t
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '(', 6, ()
    (1, 'false', 5, <ARRAY>)
    (7, '&&', 22, &&)
    (10, 'true', 5, <ARRAY>)
    (14, ')', 7, ))
    (16, '==', 23, ==)
    (19, 'false', 5, <ARRAY>)
    (24, '', 1, )
    (24, '', 1, )
End of token list


----------------------------

Test:		95

Expression:	(true || false) != true
Options:	'save-tokens'

check priorities between || and != with parentheses


Return type:	3
Return value:	
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '(', 6, ()
    (1, 'true', 5, <ARRAY>)
    (6, '||', 21, ||)
    (9, 'false', 5, <ARRAY>)
    (14, ')', 7, ))
    (16, '!=', 23, !=)
    (19, 'true', 5, <ARRAY>)
    (23, '', 1, )
    (23, '', 1, )
End of token list


----------------------------

Test:		96

Expression:	true < 5
Options:	<none>

check boolean before < comparison


Return type:	<NONE>
Return value:	<NONE>
Error position:	5
Error message:	string or number expected before operator
Dev message:	<->
Token information:
    Position:	5
    String:	<
    Type:	23
    Value:	<
Value information:
    Type:	3  (bool)
    Value:	t
Token list:	<NONE>


----------------------------

Test:		97

Expression:	5 < false
Options:	<none>

check boolean after < comparison


Return type:	<NONE>
Return value:	<NONE>
Error position:	2
Error message:	string or number expected after operator
Dev message:	<->
Token information:
    Position:	2
    String:	<
    Type:	23
    Value:	<
Value information:
    Type:	3  (bool)
    Value:	
Token list:	<NONE>


----------------------------

Test:		98

Expression:	5 < "xxx"
Options:	<none>

check comparing number to string


Return type:	<NONE>
Return value:	<NONE>
Error position:	2
Error message:	values before and after operator need to be the same type
Dev message:	<->
Value information:
    Type:	1  (numeric)
    Value:	5
Value information:
    Type:	2  (string)
    Value:	xxx
Token list:	<NONE>


----------------------------

Test:		99

Expression:	"a" < "b"
Options:	'save-tokens'

check string <


Return type:	3
Return value:	t
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '"a"', 3, a)
    (4, '<', 23, <)
    (6, '"b"', 3, b)
    (9, '', 1, )
    (9, '', 1, )
End of token list


----------------------------

Test:		100

Expression:	"b" < "b"
Options:	'save-tokens'

check string <


Return type:	3
Return value:	
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '"b"', 3, b)
    (4, '<', 23, <)
    (6, '"b"', 3, b)
    (9, '', 1, )
    (9, '', 1, )
End of token list


----------------------------

Test:		101

Expression:	"c" < "b"
Options:	'save-tokens'

check string <


Return type:	3
Return value:	
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '"c"', 3, c)
    (4, '<', 23, <)
    (6, '"b"', 3, b)
    (9, '', 1, )
    (9, '', 1, )
End of token list


----------------------------

Test:		102

Expression:	"a" <= "b"
Options:	'save-tokens'

check string <=


Return type:	3
Return value:	t
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '"a"', 3, a)
    (4, '<=', 23, <=)
    (7, '"b"', 3, b)
    (10, '', 1, )
    (10, '', 1, )
End of token list


----------------------------

Test:		103

Expression:	"b" <= "b"
Options:	'save-tokens'

check string <=


Return type:	3
Return value:	t
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '"b"', 3, b)
    (4, '<=', 23, <=)
    (7, '"b"', 3, b)
    (10, '', 1, )
    (10, '', 1, )
End of token list


----------------------------

Test:		104

Expression:	"c" <= "b"
Options:	'save-tokens'

check string <=


Return type:	3
Return value:	
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '"c"', 3, c)
    (4, '<=', 23, <=)
    (7, '"b"', 3, b)
    (10, '', 1, )
    (10, '', 1, )
End of token list


----------------------------

Test:		105

Expression:	"a" == "b"
Options:	'save-tokens'

check string ==


Return type:	3
Return value:	
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '"a"', 3, a)
    (4, '==', 23, ==)
    (7, '"b"', 3, b)
    (10, '', 1, )
    (10, '', 1, )
End of token list


----------------------------

Test:		106

Expression:	"b" == "b"
Options:	'save-tokens'

check string ==


Return type:	3
Return value:	t
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '"b"', 3, b)
    (4, '==', 23, ==)
    (7, '"b"', 3, b)
    (10, '', 1, )
    (10, '', 1, )
End of token list


----------------------------

Test:		107

Expression:	"c" == "b"
Options:	'save-tokens'

check string ==


Return type:	3
Return value:	
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '"c"', 3, c)
    (4, '==', 23, ==)
    (7, '"b"', 3, b)
    (10, '', 1, )
    (10, '', 1, )
End of token list


----------------------------

Test:		108

Expression:	"a" != "b"
Options:	'save-tokens'

check string !=


Return type:	3
Return value:	t
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '"a"', 3, a)
    (4, '!=', 23, !=)
    (7, '"b"', 3, b)
    (10, '', 1, )
    (10, '', 1, )
End of token list


----------------------------

Test:		109

Expression:	"b" != "b"
Options:	'save-tokens'

check string !=


Return type:	3
Return value:	
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '"b"', 3, b)
    (4, '!=', 23, !=)
    (7, '"b"', 3, b)
    (10, '', 1, )
    (10, '', 1, )
End of token list


----------------------------

Test:		110

Expression:	"c" != "b"
Options:	'save-tokens'

check string !=


Return type:	3
Return value:	t
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '"c"', 3, c)
    (4, '!=', 23, !=)
    (7, '"b"', 3, b)
    (10, '', 1, )
    (10, '', 1, )
End of token list


----------------------------

Test:		111

Expression:	"a" >= "b"
Options:	'save-tokens'

check string >=


Return type:	3
Return value:	
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '"a"', 3, a)
    (4, '>=', 23, >=)
    (7, '"b"', 3, b)
    (10, '', 1, )
    (10, '', 1, )
End of token list


----------------------------

Test:		112

Expression:	"b" >= "b"
Options:	'save-tokens'

check string >=


Return type:	3
Return value:	t
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '"b"', 3, b)
    (4, '>=', 23, >=)
    (7, '"b"', 3, b)
    (10, '', 1, )
    (10, '', 1, )
End of token list


----------------------------

Test:		113

Expression:	"c" >= "b"
Options:	'save-tokens'

check string >=


Return type:	3
Return value:	t
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '"c"', 3, c)
    (4, '>=', 23, >=)
    (7, '"b"', 3, b)
    (10, '', 1, )
    (10, '', 1, )
End of token list


----------------------------

Test:		114

Expression:	"a" > "b"
Options:	'save-tokens'

check string >


Return type:	3
Return value:	
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '"a"', 3, a)
    (4, '>', 23, >)
    (6, '"b"', 3, b)
    (9, '', 1, )
    (9, '', 1, )
End of token list


----------------------------

Test:		115

Expression:	"b" > "b"
Options:	'save-tokens'

check string >


Return type:	3
Return value:	
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '"b"', 3, b)
    (4, '>', 23, >)
    (6, '"b"', 3, b)
    (9, '', 1, )
    (9, '', 1, )
End of token list


----------------------------

Test:		116

Expression:	"c" > "b"
Options:	'save-tokens'

check string >


Return type:	3
Return value:	t
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '"c"', 3, c)
    (4, '>', 23, >)
    (6, '"b"', 3, b)
    (9, '', 1, )
    (9, '', 1, )
End of token list


----------------------------

Test:		117

Expression:	1 < 2
Options:	'save-tokens'

check number <


Return type:	3
Return value:	t
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '1', 4, 1)
    (2, '<', 23, <)
    (4, '2', 4, 2)
    (5, '', 1, )
    (5, '', 1, )
End of token list


----------------------------

Test:		118

Expression:	2 < 2
Options:	'save-tokens'

check number <


Return type:	3
Return value:	
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '2', 4, 2)
    (2, '<', 23, <)
    (4, '2', 4, 2)
    (5, '', 1, )
    (5, '', 1, )
End of token list


----------------------------

Test:		119

Expression:	3 < 2
Options:	'save-tokens'

check number <


Return type:	3
Return value:	
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '3', 4, 3)
    (2, '<', 23, <)
    (4, '2', 4, 2)
    (5, '', 1, )
    (5, '', 1, )
End of token list


----------------------------

Test:		120

Expression:	1 <= 2
Options:	'save-tokens'

check number <=


Return type:	3
Return value:	t
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '1', 4, 1)
    (2, '<=', 23, <=)
    (5, '2', 4, 2)
    (6, '', 1, )
    (6, '', 1, )
End of token list


----------------------------

Test:		121

Expression:	2 <= 2
Options:	'save-tokens'

check number <=


Return type:	3
Return value:	t
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '2', 4, 2)
    (2, '<=', 23, <=)
    (5, '2', 4, 2)
    (6, '', 1, )
    (6, '', 1, )
End of token list


----------------------------

Test:		122

Expression:	3 <= 2
Options:	'save-tokens'

check number <=


Return type:	3
Return value:	
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '3', 4, 3)
    (2, '<=', 23, <=)
    (5, '2', 4, 2)
    (6, '', 1, )
    (6, '', 1, )
End of token list


----------------------------

Test:		123

Expression:	1 == 2
Options:	'save-tokens'

check number ==


Return type:	3
Return value:	
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '1', 4, 1)
    (2, '==', 23, ==)
    (5, '2', 4, 2)
    (6, '', 1, )
    (6, '', 1, )
End of token list


----------------------------

Test:		124

Expression:	2 == 2
Options:	'save-tokens'

check number ==


Return type:	3
Return value:	t
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '2', 4, 2)
    (2, '==', 23, ==)
    (5, '2', 4, 2)
    (6, '', 1, )
    (6, '', 1, )
End of token list


----------------------------

Test:		125

Expression:	3 == 2
Options:	'save-tokens'

check number ==


Return type:	3
Return value:	
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '3', 4, 3)
    (2, '==', 23, ==)
    (5, '2', 4, 2)
    (6, '', 1, )
    (6, '', 1, )
End of token list


----------------------------

Test:		126

Expression:	1 != 2
Options:	'save-tokens'

check number !=


Return type:	3
Return value:	t
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '1', 4, 1)
    (2, '!=', 23, !=)
    (5, '2', 4, 2)
    (6, '', 1, )
    (6, '', 1, )
End of token list


----------------------------

Test:		127

Expression:	2 != 2
Options:	'save-tokens'

check number !=


Return type:	3
Return value:	
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '2', 4, 2)
    (2, '!=', 23, !=)
    (5, '2', 4, 2)
    (6, '', 1, )
    (6, '', 1, )
End of token list


----------------------------

Test:		128

Expression:	3 != 2
Options:	'save-tokens'

check number !=


Return type:	3
Return value:	t
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '3', 4, 3)
    (2, '!=', 23, !=)
    (5, '2', 4, 2)
    (6, '', 1, )
    (6, '', 1, )
End of token list


----------------------------

Test:		129

Expression:	1 >= 2
Options:	'save-tokens'

check number >=


Return type:	3
Return value:	
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '1', 4, 1)
    (2, '>=', 23, >=)
    (5, '2', 4, 2)
    (6, '', 1, )
    (6, '', 1, )
End of token list


----------------------------

Test:		130

Expression:	2 >= 2
Options:	'save-tokens'

check number >=


Return type:	3
Return value:	t
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '2', 4, 2)
    (2, '>=', 23, >=)
    (5, '2', 4, 2)
    (6, '', 1, )
    (6, '', 1, )
End of token list


----------------------------

Test:		131

Expression:	3 >= 2
Options:	'save-tokens'

check number >=


Return type:	3
Return value:	t
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '3', 4, 3)
    (2, '>=', 23, >=)
    (5, '2', 4, 2)
    (6, '', 1, )
    (6, '', 1, )
End of token list


----------------------------

Test:		132

Expression:	1 > 2
Options:	'save-tokens'

check number >


Return type:	3
Return value:	
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '1', 4, 1)
    (2, '>', 23, >)
    (4, '2', 4, 2)
    (5, '', 1, )
    (5, '', 1, )
End of token list


----------------------------

Test:		133

Expression:	2 > 2
Options:	'save-tokens'

check number >


Return type:	3
Return value:	
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '2', 4, 2)
    (2, '>', 23, >)
    (4, '2', 4, 2)
    (5, '', 1, )
    (5, '', 1, )
End of token list


----------------------------

Test:		134

Expression:	3 > 2
Options:	'save-tokens'

check number >


Return type:	3
Return value:	t
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '3', 4, 3)
    (2, '>', 23, >)
    (4, '2', 4, 2)
    (5, '', 1, )
    (5, '', 1, )
End of token list


----------------------------

Test:		135

Expression:	false =~ "XXX"
Options:	<none>

check if =~ has string before operand


Return type:	<NONE>
Return value:	<NONE>
Error position:	7
Error message:	string expected before operator
Dev message:	<->
Token information:
    Position:	6
    String:	=~
    Type:	23
    Value:	=~
Value information:
    Type:	3  (bool)
    Value:	
Token list:	<NONE>


----------------------------

Test:		136

Expression:	"XXX" !~ true
Options:	<none>

check if =~ has string after operand


Return type:	<NONE>
Return value:	<NONE>
Error position:	7
Error message:	string expected after operator
Dev message:	<->
Token information:
    Position:	6
    String:	!~
    Type:	23
    Value:	!~
Value information:
    Type:	3  (bool)
    Value:	t
Token list:	<NONE>


----------------------------

Test:		137

Expression:	"XXX" =~ ".[hjk"
Options:	<none>

check if =~ pattern is valid
(note:  format of error message may vary depending on perl version, system, etc)


Return type:	<NONE>
Return value:	<NONE>
Error position:	7
Error message:	Unmatched [ in regex; marked by <-- HERE in m/.[ <-- HERE hjk/ at expr_eval.pm line 1735.

Dev message:	<->
Pattern:  /.[hjk/
Unmatched [ in regex; marked by <-- HERE in m/.[ <-- HERE hjk/ at expr_eval.pm line 1735.
Token list:	<NONE>


----------------------------

Test:		138

Expression:	"678XXX" =~ "67[789]X"
Options:	'save-tokens'

check if =~ matched


Return type:	3
Return value:	t
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '"678XXX"', 3, 678XXX)
    (9, '=~', 23, =~)
    (12, '"67[789]X"', 3, 67[789]X)
    (22, '', 1, )
    (22, '', 1, )
End of token list


----------------------------

Test:		139

Expression:	"675XXX" =~ "67[789]X"
Options:	'save-tokens'

check if =~ matched


Return type:	3
Return value:	
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '"675XXX"', 3, 675XXX)
    (9, '=~', 23, =~)
    (12, '"67[789]X"', 3, 67[789]X)
    (22, '', 1, )
    (22, '', 1, )
End of token list


----------------------------

Test:		140

Expression:	"675XXX" !~ "67[789]X"
Options:	'save-tokens'

check if !~ matched


Return type:	3
Return value:	t
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '"675XXX"', 3, 675XXX)
    (9, '!~', 23, !~)
    (12, '"67[789]X"', 3, 67[789]X)
    (22, '', 1, )
    (22, '', 1, )
End of token list


----------------------------

Test:		141

Expression:	"67" + "8XXX" =~ "67[7" + "89]X"
Options:	'save-tokens'

check precedence of + and =~


Return type:	3
Return value:	t
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '"67"', 3, 67)
    (5, '+', 24, +)
    (7, '"8XXX"', 3, 8XXX)
    (14, '=~', 23, =~)
    (17, '"67[7"', 3, 67[7)
    (24, '+', 24, +)
    (26, '"89]X"', 3, 89]X)
    (32, '', 1, )
    (32, '', 1, )
End of token list


----------------------------

Test:		142

Expression:	"a" + 2 * 4 < "b" + 2 * 3
Options:	'save-tokens'

check compound expression for checking priorities


Return type:	3
Return value:	t
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '"a"', 3, a)
    (4, '+', 24, +)
    (6, '2', 4, 2)
    (8, '*', 25, *)
    (10, '4', 4, 4)
    (12, '<', 23, <)
    (14, '"b"', 3, b)
    (18, '+', 24, +)
    (20, '2', 4, 2)
    (22, '*', 25, *)
    (24, '3', 4, 3)
    (25, '', 1, )
    (25, '', 1, )
End of token list


----------------------------

Test:		143

Expression:	"XXX" %binary-operator% "YYY"
Options:	'token-function'

check for special binary operator without operator function


Return type:	<NONE>
Return value:	<NONE>
Error position:	22
Error message:	operator not evaluated by function
Dev message:	<->
No function specified.
Token information:
    Position:	6
    String:	%binary-operator%
    Type:	70
    Value:	%binary-operator%
Token list:	<NONE>


----------------------------

Test:		144

Expression:	"XXX" %binary-operator% "YYY"
Options:	'token-function,operator-function,save-tokens'

check for special binary operator


Return type:	2
Return value:	(YYY,XXX)
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '"XXX"', 3, XXX)
    (6, '%binary-operator%', 70, %binary-operator%)
    (24, '"YYY"', 3, YYY)
    (29, '', 1, )
    (29, '', 1, )
End of token list


----------------------------

Test:		145

Expression:	1000 %binary-operator% "YYY"
Options:	'token-function,operator-function'

check for special binary operator acting on non-string


Return type:	<NONE>
Return value:	<NONE>
Error position:	21
Error message:	string expected before operator
Dev message:	<->
function is code
Token information:
    Position:	5
    String:	%binary-operator%
    Type:	70
    Value:	%binary-operator%
Token list:	<NONE>


----------------------------

Test:		146

Expression:	"XXX" %binary-operator-error% "YYY"
Options:	'token-function,operator-function'

check for operator function error
(note:  format of error message may vary depending on perl version, system, etc)


Return type:	<NONE>
Return value:	<NONE>
Error position:	28
Error message:	system error
Dev message:	<->
function is code
Token information:
    Position:	6
    String:	%binary-operator-error%
    Type:	70
    Value:	%binary-operator-error%
Illegal division by zero at test.pl line 357.
Token list:	<NONE>


----------------------------

Test:		147

Expression:	"AAA" + "XXX" %binary-operator% "YYY" + "ZZZ"
Options:	'token-function,operator-function,save-tokens'

check for special binary operator precedence


Return type:	2
Return value:	AAA(YYY,XXX)ZZZ
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '"AAA"', 3, AAA)
    (6, '+', 24, +)
    (8, '"XXX"', 3, XXX)
    (14, '%binary-operator%', 70, %binary-operator%)
    (32, '"YYY"', 3, YYY)
    (38, '+', 24, +)
    (40, '"ZZZ"', 3, ZZZ)
    (45, '', 1, )
    (45, '', 1, )
End of token list


----------------------------

Test:		148

Expression:	("AAA" + "XXX") %binary-operator% ("YYY" + "ZZZ")
Options:	'token-function,operator-function,save-tokens'

check for special binary operator precedence with parentheses


Return type:	2
Return value:	(YYYZZZ,AAAXXX)
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '(', 6, ()
    (1, '"AAA"', 3, AAA)
    (7, '+', 24, +)
    (9, '"XXX"', 3, XXX)
    (14, ')', 7, ))
    (16, '%binary-operator%', 70, %binary-operator%)
    (34, '(', 6, ()
    (35, '"YYY"', 3, YYY)
    (41, '+', 24, +)
    (43, '"ZZZ"', 3, ZZZ)
    (48, ')', 7, ))
    (49, '', 1, )
    (49, '', 1, )
End of token list


----------------------------

Test:		149

Expression:	25 * 6 + 36 / 12 - 8 % 3
Options:	'syntax-check-only,save-tokens'

check syntax checking only option


Return type:	<NONE>
Return value:	<NONE>
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '25', 4, 25)
    (3, '*', 25, *)
    (5, '6', 4, 6)
    (7, '+', 24, +)
    (9, '36', 4, 36)
    (12, '/', 25, /)
    (14, '12', 4, 12)
    (17, '-', 24, -)
    (19, '8', 4, 8)
    (21, '%', 25, %)
    (23, '3', 4, 3)
    (24, '', 1, )
    (24, '', 1, )
End of token list


----------------------------

Test:		150

Expression:	25 * 6 + 36 / 12 - 8 % 3
Options:	'replay-tokens'

check token list replay


Return type:	1
Return value:	151
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '25', 4, 25)
    (3, '*', 25, *)
    (5, '6', 4, 6)
    (7, '+', 24, +)
    (9, '36', 4, 36)
    (12, '/', 25, /)
    (14, '12', 4, 12)
    (17, '-', 24, -)
    (19, '8', 4, 8)
    (21, '%', 25, %)
    (23, '3', 4, 3)
    (24, '', 1, )
    (24, '', 1, )
End of token list


----------------------------

END OF REPORT

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

Prerequisite modules loaded:

build_requires:

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


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

Environment variables:

    AUTOMATED_TESTING = 1
    COMSPEC = C:\WINDOWS\system32\cmd.exe
    NONINTERACTIVE_TESTING = 1
    NUMBER_OF_PROCESSORS = 12
    PATH = /usr/site/gcc-9.3.0/bin:/opt/perl5/cygwin_nt-10.0/3.1.7/x86_64/perl/5.33.2/x86_64-cygwin-thread-multi-quadmath/bin:/opt/perl5/cygwin_nt-10.0/3.1.7/x86_64/perl/5.33.2/x86_64-cygwin-thread-multi-quadmath/local/bin:/usr/local/bin:/usr/local/local/bin:/usr/bin:/bin
    PERL5LIB = /opt/perl5/cygwin_nt-10.0/3.1.7/x86_64/perl/5.33.2/x86_64-cygwin-thread-multi-quadmath/local/lib/site_perl:/opt/perl5/cygwin_nt-10.0/3.1.7/x86_64/perl/5.33.2/x86_64-cygwin-thread-multi-quadmath/local/lib/perl5:/opt/perl5/cygwin_nt-10.0/3.1.7/x86_64/perl/5.33.2/x86_64-cygwin-thread-multi-quadmath/local/lib
    PERL5OPT = 
    PERL5_CPANPLUS_IS_RUNNING = 44510
    PERL5_CPAN_IS_RUNNING = 44510
    PERL_CPAN_REPORTER_CONFIG = /cygdrive/c/peter/.cpanreporter/config-cygwin-OS-A01-L0123.ini
    PERL_EXTUTILS_AUTOINSTALL = 1
    PERL_MM_USE_DEFAULT = 1
    PERL_TEST_CRITIC = 1
    PERL_TEST_CRITIC = 1
    PERL_TEST_POD = 1
    PERL_TEST_POD = 1
    PERL_USE_UNSAFE_INC = 1
    POD_TESTING = 1
    POD_TESTS = 1
    PROCESSOR_IDENTIFIER = Intel64 Family 6 Model 158 Stepping 10, GenuineIntel
    SHELL = /bin/bash
    TEMP = /tmp
    TERM = xterm

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

    $^X = /cygdrive/c/opt/perl5/cygwin_nt-10.0/3.1.7/x86_64/perl/5.33.2/x86_64-cygwin-thread-multi-quadmath/bin/perl5.33.2
    $UID/$EUID = 1061331 / 1061331
    $GID = 1049089 1049089 197609 578 545 4 66049 11 15 4095 66048 1104222 1150627 1098011 1051245 1113266 1089123 1139839 1090502 1141767 1081310 1090413 1061909 1058653 1081942 1122108 1125494 1137338 1083675 1137546 1088201 1143577 1138331 1090906 1093944 1122107 1051228 1057394 1141985 1138202 1056539 1057337 1089132 1100278 1051354 1104220 1059243 1089865 1138328 1087957 1105777 1150082 1135663 1049649 1125495 1139179 1069945 1059531 1090104 1090492 1068897 1081637 1095782 1075170 1144155 1139332 1146142 1111057 1137882 1069144 1081620 70145 1049147 1136188 1083352 401408
    $EGID = 1049089 1049089 197609 578 545 4 66049 11 15 4095 66048 1104222 1150627 1098011 1051245 1113266 1089123 1139839 1090502 1141767 1081310 1090413 1061909 1058653 1081942 1122108 1125494 1137338 1083675 1137546 1088201 1143577 1138331 1090906 1093944 1122107 1051228 1057394 1141985 1138202 1056539 1057337 1089132 1100278 1051354 1104220 1059243 1089865 1138328 1087957 1105777 1150082 1135663 1049649 1125495 1139179 1069945 1059531 1090104 1090492 1068897 1081637 1095782 1075170 1144155 1139332 1146142 1111057 1137882 1069144 1081620 70145 1049147 1136188 1083352 401408

Perl module toolchain versions installed:

    Module              Have    
    ------------------- --------
    CPAN                2.28    
    CPAN::Meta          2.150010
    Cwd                 3.78    
    ExtUtils::CBuilder  0.280235
    ExtUtils::Command   7.58    
    ExtUtils::Install   2.20    
    ExtUtils::MakeMaker 7.58    
    ExtUtils::Manifest  1.73    
    ExtUtils::ParseXS   3.41    
    File::Spec          3.78    
    JSON                4.02    
    JSON::PP            4.05    
    Module::Build       0.4231  
    Module::Signature   0.87    
    Parse::CPAN::Meta   2.150010
    Test::Harness       3.42    
    Test::More          1.302183
    YAML                1.30    
    YAML::Syck          1.32    
    version             0.9928  


--

Summary of my perl5 (revision 5 version 33 subversion 2) configuration:
   
  Platform:
    osname=cygwin
    osvers=3.1.7(0.34053)
    archname=x86_64-cygwin-thread-multi-quadmath
    uname='cygwin_nt-10.0 os-a01-l0123 3.1.7(0.34053) 2020-08-22 17:48 x86_64 cygwin '
    config_args='-de -Dmksymlinks -Dusedevel -Uinc_version_list -Uinstallusrbinperl -Dusethreads -Dusemultiplicity -Dusequadmath -Dprefix=/opt/perl5/cygwin_nt-10.0/3.1.7/x86_64/perl/5.33.2/x86_64-cygwin-thread-multi-quadmath -Darchname=x86_64-cygwin-thread-multi-quadmath'
    hint=recommended
    useposix=true
    d_sigaction=define
    useithreads=define
    usemultiplicity=define
    use64bitint=define
    use64bitall=define
    uselongdouble=undef
    usemymalloc=n
    default_inc_excludes_dot=define
  Compiler:
    cc='gcc'
    ccflags ='-DPERL_USE_SAFE_PUTENV -U__STRICT_ANSI__ -D_GNU_SOURCE -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -D_FORTIFY_SOURCE=2'
    optimize='-O3'
    cppflags='-DPERL_USE_SAFE_PUTENV -U__STRICT_ANSI__ -D_GNU_SOURCE -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include'
    ccversion=''
    gccversion='9.3.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='__float128'
    nvsize=16
    Off_t='off_t'
    lseeksize=8
    alignbytes=16
    prototype=define
  Linker and Libraries:
    ld='g++'
    ldflags =' -Wl,--enable-auto-import -Wl,--export-all-symbols -Wl,--enable-auto-image-base -fstack-protector-strong -L/usr/local/lib'
    libpth=/cygdrive/c/share/apps/gcc-9.3.0/cygwin-3-x86_64/bin/../lib/gcc/x86_64-pc-cygwin/9.3.0/include-fixed /usr/local/lib /cygdrive/c/share/apps/gcc-9.3.0/cygwin-3-x86_64/bin/../lib/gcc/../../lib /usr/lib /usr/lib/../lib/../include/w32api /lib
    libs=-lpthread -ldl -lquadmath
    perllibs=-lpthread -ldl -lquadmath
    libc=/usr/lib/libc.a
    so=dll
    useshrplib=true
    libperl=cygperl5_33_2.dll
    gnulibc_version=''
  Dynamic Linking:
    dlsrc=dl_dlopen.xs
    dlext=dll
    d_dlsymun=undef
    ccdlflags=' '
    cccdlflags=' '
    lddlflags=' --shared  -Wl,--enable-auto-import -Wl,--export-all-symbols -Wl,--enable-auto-image-base -L/usr/local/lib -fstack-protector-strong'


Characteristics of this binary (from libperl): 
  Compile-time options:
    HAS_TIMES
    MULTIPLICITY
    PERLIO_LAYERS
    PERL_COPY_ON_WRITE
    PERL_DONT_CREATE_GVSV
    PERL_IMPLICIT_CONTEXT
    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_ITHREADS
    USE_LARGE_FILES
    USE_LOCALE
    USE_LOCALE_COLLATE
    USE_LOCALE_CTYPE
    USE_LOCALE_NUMERIC
    USE_LOCALE_TIME
    USE_PERLIO
    USE_PERL_ATOF
    USE_QUADMATH
    USE_REENTRANT_API
    USE_THREAD_SAFE_LOCALE
  Built under cygwin
  Compiled at Sep 22 2020 17:35:55
  %ENV:
    PERL5LIB="/opt/perl5/cygwin_nt-10.0/3.1.7/x86_64/perl/5.33.2/x86_64-cygwin-thread-multi-quadmath/local/lib/site_perl:/opt/perl5/cygwin_nt-10.0/3.1.7/x86_64/perl/5.33.2/x86_64-cygwin-thread-multi-quadmath/local/lib/perl5:/opt/perl5/cygwin_nt-10.0/3.1.7/x86_64/perl/5.33.2/x86_64-cygwin-thread-multi-quadmath/local/lib"
    PERL5OPT=""
    PERL5_CPANPLUS_IS_RUNNING="44510"
    PERL5_CPAN_IS_RUNNING="44510"
    PERL_CPAN_REPORTER_CONFIG="/cygdrive/c/peter/.cpanreporter/config-cygwin-OS-A01-L0123.ini"
    PERL_EXTUTILS_AUTOINSTALL="1"
    PERL_MM_USE_DEFAULT="1"
    PERL_TEST_CRITIC="1"
    PERL_TEST_POD="1"
    PERL_USE_UNSAFE_INC="1"
  @INC:
    /opt/perl5/cygwin_nt-10.0/3.1.7/x86_64/perl/5.33.2/x86_64-cygwin-thread-multi-quadmath/local/lib/site_perl/5.33.2/x86_64-cygwin-thread-multi-quadmath
    /opt/perl5/cygwin_nt-10.0/3.1.7/x86_64/perl/5.33.2/x86_64-cygwin-thread-multi-quadmath/local/lib/site_perl/5.33.2
    /opt/perl5/cygwin_nt-10.0/3.1.7/x86_64/perl/5.33.2/x86_64-cygwin-thread-multi-quadmath/local/lib/site_perl
    /opt/perl5/cygwin_nt-10.0/3.1.7/x86_64/perl/5.33.2/x86_64-cygwin-thread-multi-quadmath/local/lib/perl5/5.33.2
    /opt/perl5/cygwin_nt-10.0/3.1.7/x86_64/perl/5.33.2/x86_64-cygwin-thread-multi-quadmath/local/lib/perl5/x86_64-cygwin-thread-multi-quadmath
    /opt/perl5/cygwin_nt-10.0/3.1.7/x86_64/perl/5.33.2/x86_64-cygwin-thread-multi-quadmath/local/lib/perl5
    /opt/perl5/cygwin_nt-10.0/3.1.7/x86_64/perl/5.33.2/x86_64-cygwin-thread-multi-quadmath/local/lib/5.33.2/x86_64-cygwin-thread-multi-quadmath
    /opt/perl5/cygwin_nt-10.0/3.1.7/x86_64/perl/5.33.2/x86_64-cygwin-thread-multi-quadmath/local/lib/5.33.2
    /opt/perl5/cygwin_nt-10.0/3.1.7/x86_64/perl/5.33.2/x86_64-cygwin-thread-multi-quadmath/local/lib
    /opt/perl5/cygwin_nt-10.0/3.1.7/x86_64/perl/5.33.2/x86_64-cygwin-thread-multi-quadmath/lib/site_perl/5.33.2/x86_64-cygwin-thread-multi-quadmath
    /opt/perl5/cygwin_nt-10.0/3.1.7/x86_64/perl/5.33.2/x86_64-cygwin-thread-multi-quadmath/lib/site_perl/5.33.2
    /opt/perl5/cygwin_nt-10.0/3.1.7/x86_64/perl/5.33.2/x86_64-cygwin-thread-multi-quadmath/lib/5.33.2/x86_64-cygwin-thread-multi-quadmath
    /opt/perl5/cygwin_nt-10.0/3.1.7/x86_64/perl/5.33.2/x86_64-cygwin-thread-multi-quadmath/lib/5.33.2
    .