I like that book analogy!
My preference would be to check my context. If a list
made sense I would return a list of the number of letters
on each page. If it didn't I would add up the number of
letters on each page, then add those up. So my previous
piece of code becomes this:
sub length {
if (1 == @_) {
return CORE::length(shift);
}
else {
my @lengths = map {CORE::length($_)} @_;
if (wantarray) {
return @lengths;
}
else {
my $tot = 0;
$tot += $_ foreach @lengths;
return $tot;
}
}
}
Note how this falls naturally out of length being the
length of a string, and thinking of Perl as being
list-oriented...