Something that has long bothered me in C and Perl is the return from index. -1 is such a non-answer to me.
In Perl 6, I was wondering if it would make sense for functions that return a count or index to set the truth property as well. For example, allowing: if index($subject,"**SPAM**") { warn "SpamAssassin doesn't like you :)"; } There are a lot of functions that do what index does or which return a success count for list of actions (e.g. unlink or chmod). Should all of these break with Perl 5's notion of boolean success and use Perl 6's model? Here's a sample of some of those: # Slow matching for example purposes sub index($string, $substr, int $pos //= 0) { my int $subl = length($substr); my int $strl = length($string); for(int $i = $pos; $i+$subl <= $strl; $i++) { return $i but true if substr($string,$i,$subl) eq $substr; } return -1 but false; } sub all_or_false(&code, @items) { my $ok = 0; for @items -> $_ { $ok++ if code($_); } if $ok == @items { return $ok but true; } else { return $ok but false; } } sub chmod(int $mode, *@paths){ return all_or_false {syschmod($_,$mode)} @paths; } # ... also do chown, utime, kill, utime and unlink this way -- Aaron Sherman <[EMAIL PROTECTED]> http://www.ajs.com/~ajs