John and Jeff, Could you please explain the RE used.
/^User:\s*(.+?)$(?=.*=([^[]+)\[)/sm; I understood that it looks for 'User:\s'. Then I am not able to figure out the meaning of the remaining part of RE. With Best Regards, Karthikeyan S -----Original Message----- From: Jeff Pang [mailto:[EMAIL PROTECTED] Sent: Thursday, November 17, 2005 2:06 PM To: John W. Krahn Cc: Perl Beginners Subject: Re: How to get this hash? Thanks for John.I have tested it,it is good for me. 2005/11/17, John W. Krahn <[EMAIL PROTECTED]>: > Jeff Pang wrote: > > Hi,lists, > > Hello, > > > I have a file that look as: > > > > -- > > User: honorhr40 > > Got data from YY23 (md1=23,md2=24): > > [0] xxxx=46[I:0 T:Int] > > [1] pd=[I:0 T:Str] > > [2] cosnm=normal[I:0 T:Str] > > -- > > User: lulu-918 > > Got data from YY18 (md1=18,md2=19): > > [0] xxxx=69[I:0 T:Int] > > [1] pd=back.zzz.com[I:0 T:Str] > > [2] cosnm=normal[I:0 T:Str] > > > > ...... > > > > and thousands of these lines. > > > > I want to get the No.1 line and No.5 line,just as: > > > > User: honorhr40 > > [2] cosnm=normal[I:0 T:Str] > > > > and put the two lines into a hash,as: > > > > $hash{'honorhr40'} = 'normal'; > > > > I have no ideas on doing this work.Can you anyone give me some help?thanks. > > This appears to do what you want: > > #!/usr/bin/perl > use warnings; > use strict; > use Data::Dumper; > > $/ = "--\n"; > > my %hash; > > while ( <DATA> ) { > > next unless /^User:\s*(.+?)$(?=.*=([^[]+)\[)/sm; > > $hash{ $1 } = $2 > } > > print Dumper \%hash; > > __DATA__ > > -- > User: honorhr40 > Got data from YY23 (md1=23,md2=24): > [0] xxxx=46[I:0 T:Int] > [1] pd=[I:0 T:Str] > [2] cosnm=normal[I:0 T:Str] > -- > User: lulu-918 > Got data from YY18 (md1=18,md2=19): > [0] xxxx=69[I:0 T:Int] > [1] pd=back.zzz.com[I:0 T:Str] > [2] cosnm=normal[I:0 T:Str] > > > > John > -- > use Perl; > program > fulfillment > > -- > 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> -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>