Correct me if I am wrong but wouldn't @names = sprit /,/,$ans; Then you could perform your tests against the array elements. if (/[A-Za-z]+/) Assuming that the names would only contain those characters.
or if (/\w+/) meaning all word characters. Do the same thing. Splitting everything separated by a comma? > -----Original Message----- > From: Rob Dixon [mailto:[EMAIL PROTECTED]] > Sent: Thursday, January 09, 2003 10:06 AM > To: [EMAIL PROTECTED] > Subject: Re: regular expressions > > > Hello, erm, "Evan N Mr Niso/Lockheed Martin Kehayias" > > This should do what you want: > > > my @names; > do { > errmesg() if @names; > my $ans = <STDIN>; > @names = split /\s*,\s*/, $ans; > } while (grep {/[^a-zA-Z]/} @names); > > which splits on commas with any amount of preceding and > trailing whitespace. Names have to be alphabetic. > > HTH, > > Rob > > > "Evan N Mr Niso/Lockheed Martin Kehayias" > <[EMAIL PROTECTED]> wrote in message > 90AFE0B84E52EE46A8CD1DB0789C0A860ED043@DADC144">news:90AFE0B84E52EE46A8CD1DB0789C0A860ED043@DADC144... > > Greetings, > > > > I am attempting to limit entries a user could make when inputting > > names > into > > one of my scripts. I prompt the user to enter one or more > names. One > name > > is easy to isolate but when there are more I want to > support commas. > > At > the > > same time I don't want to accept anything other than names > and commas. > > I want to force the user to either enter names correctly or > exit. For > > that matter it would be really cool if I could test the > names against > > /etc/passwd. But beggars can't be choosers I will tackle the array > > piece later. > > > > What the user sees: > > > > Please enter user name(s): > > If more than one separate using commas > > example (single name): evan > > example (multi name): debbie, clint, henry > > > > > > > > So far what broken pieces I have... > > > > #!/usr/bin/perl > > > > > > while($ans !~ /^[a-z]+$/ || $ans !~ /^[a-z]+\,?[a-z]*$/) { > > errmesg (); > > $ans = <STDIN>; > > > > }; > > > > sub errmesg { > > print "\nType user name(s) and press enter:\n"; > > print "note: if more than one separate using commas\n"; > > print "example (single name): evan\n"; > > print "example (multi name): debbie, clint, henry\n"; > > } > > > > > > -- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]