Hi Rob, Just'd like to add my $0.02 to the brilliant solutions you offered. )
You can access the anonymous arrays from @desc using > > foreach my $rest (@desc) { > print "@$rest\n"; > } > > Or just... say "@$_" for @desc; ... if one prefers conciseness - and is able to use 5.010, of course. ) But there is no need to split the thrid field in the first place. Even more, it may produce slightly incorrect results: blocks of whitespace in @rest will collapse into single space when quote-printed (print "@rest"). Tabulations will be reduced to a simple space symbol as well. > You have two options: first to split on more than a single space with > my ( $lat, $lon, $rest ) = split /\s{2,}/; > This solution will work correctly only if 'remainder' part of phrase won't have spacings longer than 1 symbol. Otherwise the rest of phrase will be omitted - without any warnings whatsoever. and secondly to limit the number of fields that split() divides the record > into > my ( $lat, $lon, $rest ) = split ' ', $_, 3; > And this solution will work correctly all the time, which (in my opinion) makes it preferable. ) Besides, it should work a bit faster. Be aware that both of these techniques will leave the newline on the end > of the last field, so a call to chomp() will be necessary as the first > line of the while loop. > Or then again, we may just chomp the $rest if necessary. -- iD