Hi Rajeev, I'm not sure why you feel the need to join your buffer into a big string. >From what you describe couldn't you just process each buffer element one by one?
foreach my $buffer_entry (@buff) { if($buffer_entry =~ /(FastEthernet|down)/i) { print $buffer_entry; } } Let us know if your trying to do something more complicated that I've not understood. HTH, Rob "Pandey Rajeev-A19514" <[EMAIL PROTECTED]> wrote in message news:[EMAIL PROTECTED] > Hi, > > In short, I have a defined set of pattern that can occur across any number of lines(scalars) in a buffer (array of scalars) and I need to print only those lines(Scalars) that contain the full or partial pattern. For eg. For the buffer @buff (as shown below), I have to find out the occurance of "FastEthernet" and "down". > > I have pasted a code below : > I join the buffer to make a Scalar and then search for the pattern. > > **************************************************************************** **************** > my @buff; > $buff[0] = "Jul 5 03:22:29.635 cst: SNMP: 10.1.0.1 queue overflow, dropping packet\n"; > $buff[1] = " ifEntry.1.13 = 13\n"; > $buff[2] = " ifEntry.2.13 = FastEthernet3/9\n"; > $buff[3] = " ifEntry.3.13 = 6\n"; > $buff[4] = " lifEntry.20.13 = administratively down\n"; > $buff[5] = " ifEntry.2.13 = FastEthernet3/9\n"; > $buff[6] = " ifEntry.3.13 = 6\n"; > $buff[7] = " lifEntry.20.13 = administratively down\n"; > > $temp = join($",@buff); > if($temp =~ /FastEthernet(\n|\d|\w|\.|\/|\s|=)*down/i) { > print "MATCH found\n"; > } > **************************************************************************** ******************* > > Now, that the match has been found, I just want to print only those scalars in @buff which contains the specified pattern. > > The print should be > ifEntry.2.13 = FastEthernet3/9 > lifEntry.20.13 = administratively down > > > Regards > Rajeev > > -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]