You need to match the whole string, not just part of it.
$str =~ /^[A-Za-z0-9_]+$/
The ^ will match the beginning of the string, and the $ will match a newline
or the end of the string. Usually, the newline doesn't come into play as
you normally chomp( $str ) before comparing.
Tanton
----- Original Message -----
From: "bioinfo Gu" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Cc: <[EMAIL PROTECTED]>
Sent: Wednesday, October 30, 2002 9:49 AM
Subject: Re: pattern matching
>
> Hi Jonathan,
> Thank you very much for your reply. I check your script, it did not work:
for example: Suppose I give the string "abc", "abc123" "123" "abc_123"
"abc.123": The string "abc", "abc123", "123", "abc-123" should be legal, but
the "abc.123" should be NOT legal. I am using perl script to open user
account, and check if user ID are legal or not. I just allow user ID include
letters, numbers and underscore(_), excluding all other characters such as:
!@#$%^&*(): all these stuff.
> But use script: if ($str =~ /[A-Za-z0-9\_]+/) { print "legal"; } else
{print "Illegal";} It will print "Legal" with all the strings "abc"
"abc123" "123" "abc_123" "abc.123"
> Thanks again.
> Grace
> Jonathan Daugherty <[EMAIL PROTECTED]> wrote:# Hello, I want to
input a string which is used to create file name on unix. and I want to
allow input string to consist of letters(A-Z, or a-z) and numbers(0-9) and
underscroe( _ ) within file name.
> #
> # Does anoybody know how to check the input string legal or not?
>
> # note: the following does not permit empty names.
>
> if ($input =~ /[A-Za-z0-9\_]+/) {
> # create file
> } else {
> # report error
> }
>
> --
>
> Jonathan Daugherty
> http://www.cprogrammer.org
>
>
>
>
> ---------------------------------
> Do you Yahoo!?
> HotJobs - Search new jobs daily now
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]