Here is a tool I use to unfold long lines in LDAP outputs.
It also works on mailboxes that have the Received: lines
or Content-*: lines folded.

#!/usr/bin/perl

#syntax:  unfold.pl filename > newfilename

if ($ARGV[0]) {
   local $/ = '';
   open(FILE, "<$ARGV[0]") or die "can't open $ARGV[0]: $!\n";
   @records = <FILE>;
   close(FILE);
}
foreach $record (@records) {
   $record =~ s/\n\s//g;
   print "$record\n\n";
}

More comments inserted inline;

> Hi ,
> 
> I am stuck with input record separator
> 
> I have a file .. say "abc"
> 
> ***********************************************
> AAAAAAAAAAAAAAAA
> AAAAAAAAAAAAAAAA
> AAAAAAAAAAAAAAAA
> 
> BBBBBBBBBBBBBBBB
> BBBBBBBBBBBBBBBB
> BBBBBBBBBBBBBBBB
> 
> CCCCCCCCCCCCCCCC
> CCCCCCCCCCCCCCCC
> 
> ***********************************************
> 
> I read the file in @lines.
> open(IN, "abc);

The above line is missing the closing quote on your filename, and
you are letting the OPEN statement "assume" the "<" input character.

> @lines = <IN>;

You are no longer reading in "lines", you are reading in multi-line
records.  You should treat (and name) them as such.
> 
> Now I want to split the file into three records (three other lists).
> 
> @a = ("AAAAAAAAAAAAAAAA\n",
>       "AAAAAAAAAAAAAAAA\n",
>       "AAAAAAAAAAAAAAAA\n");
> 
> @b and @c similarly should contain the other two records.

The second paragraph could be modified to fit your needs
rather simply.

$count = 0;
foreach $record (@records) {
   @recordnumber$count = $record;
   $count++
}

Now if you want to do something with individual lines, you can
do it before the closing brace or in another loop.


Dan Liston


-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to