Good morning, I'm using a recipe from The Perl Cookbook (11.10 for anyone browsing at home) to produce a record structure from items in a text file. The text file itself has a simple structure:
field:value field:value field:value field:value field:value etc. That is, the records are separated by a blank line and they contain key/value pairs, joined by a colon. The code I'm working with is this: $/ = ""; while (<>) { my @fields = split /^([^:]+):\s*/m; shift @fields; push(@Array_of_Records, { map /(.*)/, @fields }); } It works well to produce an array of hashes, and I can manipulate it from there without trouble. However, I want to understand this section better. First question: why does the split command produce a leading null field? (My best guess is that the regex [^:]+ captures anything that is not a colon, and that includes a null field?!?) Second question: what is the map doing in the last line, and why is it written with // delimiters? (Best guess, it is including everything from fields within parentheses (forcing the items to be treated as a list?) and you can't use {} because of the outer {} to create the hash reference?!?) Sorry if this is very long. I wanted to make sure to include enough information to make the questions clear. Thanks in advance, Telemachus -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] http://learn.perl.org/