| Search perlmeme.org | |
| Home » Faqs » Manipulating text » Split and keep |
For example, you have the following string:
12.00 Play School 12.40 The Wiggles 13.00 Movie: The Wizard of Oz
And you want to split it into an array, where the elements of the array would be as follows:
12.00 Play School
12.40 The Wiggles
13.00 Movie: The Wizard of Oz
If you just split on the times, you would lose them:
#!/usr/bin/perl
use strict;
use warnings;
my $text = "12.00 Play School 12.40 The Wiggles 13.00 Movie: The Wizard of Oz";
my @data = split(/\d{2}\.\d{2}/, $text);
foreach my $d (@data) {
print "$d\n";
}
exit 0;
The produces the following output:
Play School
The Wiggles
Movie: The Wizard of Oz
Tell the split function to keep the matched characters. This solution is identical to the problem code above, except that the brackets in the match pattern regular expression tell split to keep the match data:
#!/usr/bin/perl
use strict;
use warnings;
my $text = "12.00 Play School 12.40 The Wiggles 13.00 Movie: The Wizard of Oz";
my @data = split(/(\d{2}\.\d{2})/, $text);
foreach my $d (@data) {
print "$d\n";
}
exit 0;
This produces the following output:
12.00
Play School
12.40
The Wiggles
13.00
Movie: The Wizard of Oz
perldoc -f split