Ron Smith am Sonntag, 19. Februar 2006 18.47: > Hi all, Hi Ron
> This page accepts a series of numbers, separated by spaces, and gives the > values listed bellow. > I'm getting the following error, No information about the input that causes the error; are there also inputs not causing an error? > but don't see why. Can anyone spot my error? > Please, enter numbers separated by spaces only!: Bad file descriptor at > E:/www/cgi-bin/pg93ex3.11SeriesOfNumbers.pl line 14. Hm, line 14 contains the die "Please..." > > I've narrowed the problem down to the "if" block (the regex), I'd like to > accept numbers and spaces only. Here's the code: > > #!E:/www/perl/bin/perl.exe > > use strict; > use warnings; > use CGI qw( :standard ); > use CGI::Carp qw( fatalsToBrowser ); > print header(); > > my $userIn = param( "textfield" ); > > if ( $userIn =~ /^(\d+|\s*)$/ ) { This does not match inputs containing more than one number. What you want is something like /^\s*((?:\d+\s*?)+)\s*$/ The inner (?:) does not capture output (see perldoc perlre), and the regex trims the input (which is allowed to contain leading and trailing space) > $userIn = $1; > } else { > die "Please, enter numbers separated by spaces only!: $!"; > } The if-else could be shortened to (untested, so please check): die "Bla" unless ($userIn)=$userIn=~/^\s*((?:\d+\s*?)+)\s*$/; > my @numbers = split( / /, $userIn ); This only splits on a single space character. my @numbers = split /\s+/, $userIn; splits (explicitly) on the same whitespace allowed in the regex above. hth! Hans [irrelevant parts snipped away] -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>