That is not what the original code snippet does (it does in fact
count the string length .. hence the variable named $string_length).
If you pasted the code into your editor you could see if there was a
space in the regex or not (not). Your code to count words, however, not
only isn't -w compliant (implicit split to @_), it can very easily
give wrong results:
$ths = ' this is a string';
$i = split(/\s/,$ths);
print "$i\n";
If you want to split a string on whitespace, use the special case of
split(" ", $ths) which splits on multiple whitespace and
ignores any leading null field (see: perlfunc:split for details).
$_ = ' this is a string';
my @words = split " ";
print scalar @words, "\n";
# or you could go for this version :-)
$_ = ' this is a string';
my $words =()= /(\S+)/g;
print $words, "\n";
|