Apologies if you perceived my answer as being patronizing.
If you want to split your text into words AND keep the spaces, split might be an alternative. Using a capture group in the regex in split, the delimiters are not discarded. So splitting on words will give you the words and the characters inbetween:
use strict;
use warnings;
use Data::Dumper;
my $text = <<EOTEXT;
This is a word.
Here is another sentence.
EOTEXT
my @words = split /\b(\w+)\b/, $text;
print Dumper \@words;
results in
$VAR1 = [
'',
'This',
' ',
'is',
' ',
'a',
' ',
'word',
'.
',
'Here',
' ',
'is',
' ',
'another',
' ',
'sentence',
'.
'
];
|