in reply to perl regex to match newline followed by number and text
So something more like:
use strict; use warnings; my $wholeBallOfWax = do {local $/; <DATA>}; my @records = split /\s*(?<=\n)(?=\d+~)/, $wholeBallOfWax; s/\n+/ /gs for @records; s/\s+\z//gs for @records; print join "\n", @records; __DATA__ 99~Arun~Kumar~Mobilenum: 1234-567 , from Earth Human 98~Mahesh~Babu~Mobilenum: 5678-901 , from Earth Human 97~Grand~Father~Mobilenum: 2734-567 , from Mars Ape
Prints:
99~Arun~Kumar~Mobilenum: 1234-567 , from Earth Human 98~Mahesh~Babu~Mobilenum: 5678-901 , from Earth Human 97~Grand~Father~Mobilenum: 2734-567 , from Mars Ape
where the only substantive change from my suggested earlier code was to replace hyphen with tilda and replace internal newlines with spaces.
Update: or Per Hippo's suggestion:
use strict; use warnings; use Test::More tests => 1; my @want = ( '99~Arun~Kumar~Mobilenum: 1234-567 , from Earth Human', '98~Mahesh~Babu~Mobilenum: 5678-901 , from Earth Human', '97~Grand~Father~Mobilenum: 2734-567 , from Mars Ape' ); my $wholeBallOfWax = do {local $/; <DATA>}; my @records = split /\s*(?<=\n)(?=\d+~)/, $wholeBallOfWax; s/\n+/ /gs for @records; s/\s+\z//gs for @records; is_deeply (\@records, \@want); __DATA__ 99~Arun~Kumar~Mobilenum: 1234-567 , from Earth Human 98~Mahesh~Babu~Mobilenum: 5678-901 , from Earth Human 97~Grand~Father~Mobilenum: 2734-567 , from Mars Ape
|
|---|