develooper Front page | perl.perl5.porters | Postings from July 2009

Re: [PATCH] Remove implicit split to @_

Thread Previous | Thread Next
Yitzchak Scott-Thoennes
July 9, 2009 15:44
Re: [PATCH] Remove implicit split to @_
Message ID:
On Thu, July 9, 2009 2:34 pm, Aristotle Pagaltzis wrote:
> * Michael G Schwern <> [2009-07-09 23:05]:
>> Yitzchak said:
>>> I don't get why you'd want to do that. If I wanted to count
>>> space-separated fields, I'd do:
>>> $count = 1 + $thing =~ y/ //;
>> Yitzchak's altnerative approach is very clever but underscores
>> the need for making split in scalar context just DWIM. Because... damn,
>> that's how you're supposed to count fields?
> That only works if the field separator is exactly one character,
> anyway. OTOH `1 + $str =~ m//g` works in the general case and is far less
> unintuitive.

I was trying to give the IMO underappreciated y/// some love.  It's hard
to say for sure what I'd really do, since I find it hard to imagine
counting fields without actually wanting the fields:

@fields = split ...;
$field_count = @fields;

but if it actually came up in practice, I might just:

$field_count = () = split ...;

I'm not completely satisfied that "fixing" scalar context is the right
thing to do; just like with sort, where there are several "right" scalar
context behaviors.

With my C hat on, I'd expect it to return the first field, like strtok.
Without it, I'd be as inclined to expect the last field as to expect
a count.

Thread Previous | Thread Next Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at | Group listing | About