In article <[EMAIL PROTECTED]>, Janek Schleicher 
wrote:

> Pedro Antonio Reche wrote at Wed, 11 Jun 2003 13:38:18 -0500:
> 
>> I would like to match a string  if it has only cero or more of a defined
>> set of characters.
>> For example:
>> if "GACT"  are the characters, then
>> 
>> GACTNGACT ## This string should not be matched because it has the extra
>> character N
>> GACCCCCCC ## This could be matched;
>> 
>> Any help to solve this problem will be greatly appreciated.
> 
> Just another (from my point of view direct) view is
> 
> $string =~ /^[GACT]*$/;
> 
> The anchor stands for the beginning of the string,
> [GACT]* stands for zero or more of the defined characters
> $ stands for the end of the string.

This is my "only slightly fancier" version - still uses DATA though; 
(critique/advice always welcome):

#!/usr/bin/perl
use warnings;
use strict;

# zero_or_more

my $valid_chars = get_valid_chars();
my $regex = qr{^[$valid_chars]*$};

while (<DATA>) {
   # this really does an "exclude all other possibilities" match
   # (zero or more of valid characters)
   # but I skip empty lines
   next if /^$/;
   chomp;
   print check_line($., $_);
}

## end main ##
## beg subs ##

sub get_valid_chars {
   print "Enter valid characters (i.e. \"ABCD\"): ";
   chomp (my $input = <STDIN>);
   return $input;
}

sub check_line {
   my ($ln_nbr, $line) = @_;
   my $result = "Line #" . $ln_nbr . ": " . $line;
   $result .= " Pass!" if ( $line =~ $regex );
   $result .= "\n";
   return $result;
}

__DATA__
GACTNGACT
GACCCCCCC

GGAACCNNG

##

-K (only 379 messages behind)


-- 
Kevin Pfeiffer
International University Bremen

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to