Agnello, Here is one way to do it
[code] use strict; use warnings; use subs qw/get_single_record/; my $start = '^start$';#Start pattern my $end = '^end$';#End pattern while( my @record = get_single_record( *DATA, $start, $end )){ chomp @record; print join ',', @record, "\n"; #You can use say instead if your are on version 5.10 and higher } sub get_single_record { my $file = shift;#Get the file to read my $start = shift;#Get the start pattern my $end = shift;#Get the end pattern my @record; while(<$file>) { if(/$start/ ... /$end/) { #Skip the start and end lines push @record, $_ unless (/$start/ || /$end/); #Exit on $end; as we are done with one record last if /$end/; } } return @record; } __DATA__ start name:agnello dob:2 april address:123 street end start name:babit dob:13 april address:3 street end start name:ganesh dob:1 april address:23 street end [/code] [output] name:agnello,dob:2 april,address:123 street, name:babit,dob:13 april,address:3 street, name:ganesh,dob:1 april,address:23 street, [/output] best, Shaji ------------------------------------------------------------------------------- Your talent is God's gift to you. What you do with it is your gift back to God. ------------------------------------------------------------------------------- ________________________________ From: Agnello George <agnello.dso...@gmail.com> To: Perl Beginners <beginners@perl.org> Sent: Friday, 12 July 2013 5:14 PM Subject: grab pattern from start and end block hi i have raw data that is like this in a flat file . start name:agnello dob:2 april address:123 street end start name:babit dob:13 april address:3 street end start name:ganesh dob:1 april address:23 street end i need to get the data in the following format name:agnello, dob:23 april ,address:123 street name:babit,dob:13 april,address:3 street name:ganesh,dob:1 april,address:23 street i came up with this , is there a better way to do this : =============================== #!/usr/bin/perl use strict; use warnings; open my $FH , 'data.txt' or die "cannot open file $!"; read $FH, my $string, -s $FH; close($FH); my @string = split ( /start/ , $string ) ; my %data; foreach ( @string ) { chomp; next if /^$/ ; s/^ $//g; s/end//; my @data = split(/\n/, "$_"); foreach my $i (@data) { print "$i,"; } print "\n"; } -- Regards Agnello D'souza “Happiness is not so much in having , but in sharing. We make a living by what we get, but we make a Life by what we Give.”