I believe the '.' character does not have the same special meaning within a character class, and that's why it isn't matching what you think it does. You should check out the YAPE::Regex::Explain module. It's great for debugging regular expressions.
-----Original Message----- From: Ãznur Tastan [mailto:[EMAIL PROTECTED] Sent: Tue 2/24/2004 11:56 PM To: Perl Lists Cc: Subject: regular expression that doesn't match any string Hi all Just for fun (really no context) i was wondering how to create regular expressions that will never match any string. /^[^\w\W]/ is one of them am I right? No string can start with a character that is neither alphanumeric nor nonalhanumeric. But why does /^[^.\n]/ matches . doesn't that mean the string should begin a character that is not any character or not a newline(nothing else should be left). Could someone enligthen me? Below is to code I use to check. thanks oznur use strict; use warnings; my $string="does it match"; if ($string=~/(^[^\w\W])/){ print "matches $1\n"; } else { print "doesn't match \n"; } if ($string=~/(^[^.\n])/){ print "matches $1\n"; } else { print "doesn't match \n"; } ----- Original Message ----- From: "R. Joseph Newton" <[EMAIL PROTECTED]> To: "Ãznur Tastan" <[EMAIL PROTECTED]> Cc: "'Perl Lists'" <[EMAIL PROTECTED]> Sent: Wednesday, February 25, 2004 9:09 AM Subject: Re: how to push a double dimensional array > Ãznur Tastan wrote: > > > > Well actually storing the examples doesn't need the information for the > > alignment but > > if you are interested. > > Pairwise sequence alignment is a widely used terms to visualize the > > similarity of protein or DNA > > sequences. So the characters denotes the aminoacids(or nucleotides in DNAs) > > and the conservation substitutions or deletions of give clues about > > biological meanings actualy predict the evolution at that site of the > > protein. > > Substitution scoring matrices which are mostly based on frequency analysis > > are used to align the alignments. These are matrices that tell how similiar > > one aminoacid to another so to say how it is likely to be replaced by the > > other aminoacid. so Aligning L with L will have positive score that you can > > get from the scoring matrice entry yet the gaps will be penalized although > > mismatches will be penalized. > > The alignment is obtained by using a dynamic programing appraach, > > Needleman-Wunch algorithm. > > The score is the sum of the score of aligning each character. > > > > > > > > I await the conclusion and enlightment as this thread has proven > > > interesting. :) > > > > > > Thx/Sx > > Okay. This is getting a bit more clear. Can you always count on being able to > express the score as an integer? If so, this can be pretty straightforward, but > there will be a Perl learning curve. It sounds to me like you really need a > class for these alignments. The meaning of their internal data is very specific > to this context. You could use a hash for any particular alignment, of course, > but then you are re-doing the work with each one. You class could start out as > simple as the structs you were seeking earlier. Perlis very liberal [too > liberal IMHO] about access to data members of its objects. So your package > could start out as simple as: > > package SequenceAlignment; > > use strict; > use warnings; > > use Exporter; > > my @ISA = Exporter; > > sub new { > my $class = shift; > my ($sequence1, $sequence2, $alignment_score) = @_; > > my $self = { > 'base sequence' => $sequence1, > comparison sequence' => $sequence2, > 'alignment score' => $alignment_score > } > > bless $self, $class; > return $self; > } > > Even without any methods defined, this at least gives you a framework for > storing the alignments. Since you obviously have some fairly specific > operations relating to them, you will want to create some methods to manipulate > the data in context, though. > > One great advantage to this approach is that you can pass the reference returned > by the constructor above in a very lightweight manner. When you need > information from the reference itself, you can access the information through > this reference: > > my $alignment = SequenceAlignment->new ('AGGGTCATCCTTA', CCTTAGTTAA___', 2); > # Sorry if the data above fails any sanity tests > Quick and dirty access: > my $base_sequence = $alignment->{'base sequence'} > > Object-oriented access; > my $base_sequence = $alignment->get_base_sequence(); > > With the second access style shown above, you have the advantage that you can > define the get_base_sequence() method so as to take into account any factors > relevant to handling this particular form of data. > > Joseph > > > -- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > <http://learn.perl.org/> <http://learn.perl.org/first-response> > -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>