Thanks so much, but I am still confused on one point. I have: next if $line =~ (/^\*+/)|(/^\s*$/);
and it seems to work, but you say: next if $line =~ /^(\*|\s*$)/; wouldn't this only find one "*" that the line starts with. i.e. * foo ************************ foo would both be skipped, what about $line =~ /^(\**|\s*$)/; ? I learned a lot from how you did the program, thanks again, tim