From: Michael R. <mr...@us...> - 2002-04-29 04:13:43
|
Update of /cvsroot/kick/kick In directory usw-pr-cvs1:/tmp/cvs-serv5855 Modified Files: GetOption.pm Log Message: Typprüfung bei numerischen Parametern Index: GetOption.pm =================================================================== RCS file: /cvsroot/kick/kick/GetOption.pm,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** GetOption.pm 23 Oct 2001 20:36:33 -0000 1.5 --- GetOption.pm 29 Apr 2002 04:13:40 -0000 1.6 *************** *** 38,45 **** sub Options { ! my ($hash) = shift @_; ! push @_, "hilfe"; ! push @_, "h"; # mrau, 10.10.2001 22:21 `eval`auswerten, z.B. `100+200` ergibt als --- 38,50 ---- sub Options { ! my ($hash, @opt) = @_; ! push @opt, "hilfe"; ! push @opt, "h"; ! ! # mrau: 28.04.2002 14:56 ! # Typprüfung bei numerischen Parametern ! ! my @optstr = map { $_ =~ /(.+)\=f$/ ? "$1=s" : $_ } @opt; # mrau, 10.10.2001 22:21 `eval`auswerten, z.B. `100+200` ergibt als *************** *** 47,51 **** my ($default, @argv); ! foreach (@ARGV) { if ($_ =~ /^\`(.*?)\`$/) { --- 52,56 ---- my ($default, @argv); ! foreach (@ARGV) { if ($_ =~ /^\`(.*?)\`$/) { *************** *** 64,68 **** my @values; ! foreach (@_) { if ($_ =~ /^\?(.*)/) { $default = $1; --- 69,73 ---- my @values; ! foreach (@optstr) { if ($_ =~ /^\?(.*)/) { $default = $1; *************** *** 70,74 **** } else { ! push @values, $_; } } --- 75,79 ---- } else { ! push @values, $_; } } *************** *** 78,82 **** if (@ARGV) { if ($default) { ! ${$hash}{$default} = sprintf '"%s"', (join " ", @ARGV); } else { --- 83,87 ---- if (@ARGV) { if ($default) { ! ${$hash}{$default} = sprintf '"%s"', (join " ", @ARGV); } else { *************** *** 85,88 **** --- 90,102 ---- } + # mrau: 28.04.2002 14:56 + # Typprüfung bei numerischen Parametern + + foreach (@opt) { + if (($_ =~ /(.+)\=f$/) && (exists(${$hash}{$1})) && (!&IsNumber(${$hash}{$1}))) { + die "Numerischer Parameter $1 erwartet"; + } + } + # Standardparameter lesen *************** *** 115,118 **** --- 129,155 ---- } + sub IsNumber { + + my @bool = map { + if ( ($_ =~ /^-?(\d+(?:\.\d*)?|\.\d+)$/) || + ($_ =~ /\d+[\/\.\-]\d+[\/\.\-]\d+$/) ) { + 1; + } + elsif ($_ =~ /^\#\d+[\/\.\-]\d+[\/\.\-]\d+\#$/) { + if (&DBDriver eq 'mysql') { + 0; + } + else { + 1; + } + } + else { + 0; + } + } @_; + + return wantarray ? @bool : $bool[0]; + } + __END__ *************** *** 208,211 **** --- 245,252 ---- $Log$ + Revision 1.6 2002/04/29 04:13:40 mrau + + Typprüfung bei numerischen Parametern + Revision 1.5 2001/10/23 20:36:33 mrau Default Parameter eingeführt |