When i write the condition my @m = $fullStruct =~ /$DLstatement/g; and try printing the array, print "\nThe array is @m\n"; It prints nothing.... This is the problem...
Thanks and Regards, Dharshana On 8/28/07, Chas Owens <[EMAIL PROTECTED]> wrote: > > On 8/28/07, Dharshana Eswaran <[EMAIL PROTECTED]> wrote: > > Hi All, > > > > I have a pattern, which reads as shown below: > > > > my $comment = qr{\s* (?:/\* .*? \*/ \s*)*}xs; > > my $identifier = qr{ [A-Za-z_]\w* }xs; > > my $statement = qr{ > > \s* > > ($identifier) > > \s+ > > ($identifier) > > \s* > > (?: \[ (.*?) \] )? > > \s* > > ; > > \s* > > $comment? > > }xs; > > > > my @m = $abc =~ /$statement/g; > > > > My string reads as shown below: > > > > $abc = "typedef struct _MSG_S > > { > > CALL_ID callId; /**< call id */ > > VOICE_STATUS status; /**< Call status */ > > id_t id; /**< The id of process call */ > > } TAPI_VOICE_NOTIFY_CALL_STATUS_MSG_S;"; > > > > > > The condition $abc =~ /$statement/g; is not satisfied. The array @m is > not > > being filled. > > > > I am unable to find out the mistake. Is the pattern regex wrong > somewhere? > > > > Thanks and Regards, > > Dharshana > > > > > That is not the behaviour I am seeing. Please post a full example > that demonstrates your problem. The following code prints out: > > callId is of type CALL_ID > status is of type VOICE_STATUS > id is of type id_t > > as expected. > > #!/usr/bin/perl > > use strict; > use warnings; > > > my $comment = qr{\s* (?:/\* .*? \*/ \s*)*}xs; > my $identifier = qr{ [A-Za-z_]\w* }xs; > my $statement = qr{ > \s* > ($identifier) > \s+ > ($identifier) > \s* > (?: \[ (.*?) \] )? > \s* > ; > \s* > $comment? > }xs; > > my $abc = "typedef struct _MSG_S > { > CALL_ID callId; /**< call id */ > VOICE_STATUS status; /**< Call status */ > id_t id; /**< The id of process call */ > } TAPI_VOICE_NOTIFY_CALL_STATUS_MSG_S;"; > > while ($abc =~ /$statement/g) { > my ($type, $name, $size) = ($1, $2, $3); > $type = "array of $type with $size elements" if defined $size; > print "$name is of type $type\n"; > } >