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
In reply to Re: perl regex to match newline followed by number and text
by GrandFather
in thread perl regex to match newline followed by number and text
by arunkumarzz
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |