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
|