Your version won't produce the result you want if the function returns only one value: you'll just get the value returned.
The p5p version works by filling a list with the return values and then assigning the list, not the function, to a scalar, and works equally well with one or more return values.
It also allows you to keep the return values. This will give you a taste of what it's like maintaining my old code:
sub splat {
my @letters = split(/\s/,$_[0]);
return (rand(2) > 1) ? @letters : \@letters;
}
my $count = my @letters = splat('The world is all that is the case.');
my $output = join(",",($count > 1) ? @letters : @{$letters[0]});
print $output;