Blame test/match3.awk

Packit Service f629e6
# Date: Mon, 28 Jul 2008 17:25:32 +0200
Packit Service f629e6
# From: Dirk Zimoch <dirk.zimoch@psi.ch>
Packit Service f629e6
# Subject: match() prevents numeric strings from beeing treated numerically
Packit Service f629e6
# To: bug-gawk@gnu.org
Packit Service f629e6
# Message-id: <488DE4EC.6020400@psi.ch>
Packit Service f629e6
# 
Packit Service f629e6
# In gawk version 3.1.5, numeric user input that is parsed with match() is not 
Packit Service f629e6
# recognized as "numeric string" any more. I.e. mixed string-numeric comparison 
Packit Service f629e6
# does not work any more. In version 3.1.1, it worked. (Even though the 
Packit Service f629e6
# documentation never explicitly mentioned this behavior for match(), as it does 
Packit Service f629e6
# for split(). But is says that "user input" should be treated that way.)
Packit Service f629e6
# 
Packit Service f629e6
# awk 'BEGIN{match(".5",/.*/,a);print a[0]==.5?"OK":"FAULT"}'
Packit Service f629e6
# 
Packit Service f629e6
# Version 3.1.1 prints OK, version 3.1.5 prints FAULT.
Packit Service f629e6
# 
Packit Service f629e6
# awk '{match($0,/.*/,a);print a[0]==a[0]+0?"OK":"FAULT"}' << EOF
Packit Service f629e6
# 5
Packit Service f629e6
# 5.0
Packit Service f629e6
# 0.5
Packit Service f629e6
# .5
Packit Service f629e6
# EOF
Packit Service f629e6
# 
Packit Service f629e6
# Version 3.1.1 prints
Packit Service f629e6
# OK
Packit Service f629e6
# OK
Packit Service f629e6
# OK
Packit Service f629e6
# OK
Packit Service f629e6
# 
Packit Service f629e6
# Version 3.1.5 prints
Packit Service f629e6
# OK
Packit Service f629e6
# FAULT
Packit Service f629e6
# OK
Packit Service f629e6
# FAULT
Packit Service f629e6
# 
Packit Service f629e6
# 
Packit Service f629e6
# -- 
Packit Service f629e6
# Dr. Dirk Zimoch
Packit Service f629e6
# Paul Scherrer Institut, WBGB/006
Packit Service f629e6
# 5232 Villigen PSI, Switzerland
Packit Service f629e6
# Phone +41 56 310 5182
Packit Service f629e6
# 
Packit Service f629e6
{
Packit Service f629e6
	match($0,/.*/,a)
Packit Service f629e6
	print a[0] == a[0]+0 ? "OK" : "FAULT"
Packit Service f629e6
}