Rob Dixon schreef:
> Richard Lee wrote:
>> Dr.Ruud wrote:
>>> Richard Lee schreef:
>>>> While reading perl cookbook, I came to page 94 and having a hard
>>>> time understanding this particular phrase
>>>> my $sepchar = grep( /,/ => @_ ) ? ";" : ",";
>>>
>>> Shortcutting alternative:
>>> my $sepchar = ",";
>>> for (@_) { /,/ and $sepchar = ";" and last }
>>> but (unless @_ is quite big) the grep alternative is likely to be
>>> faster.
>>
>> I understood the original but I am not so sure of your solution??
>> Can you write it out completely so that I can try it out?
>
> It's equivalent to:
>
> my $sepchar = ',';
> foreach (@_) {
> if (/,/) {
> $sepchar = ';';
> last;
> }
> }
>
> And IMO is much better written that way.
TIMTOWTDI.
Another shortcutting alternative:
my $sepchar = ',';
for (@_) { $sepchar = ";" and last if /\Q$sepchar/ }
And another:
use List::Util qw(first);
my $sepchar = first( {/,/} @_ ) ? ";" : ",";
And another:
use List::MoreUtils qw(any);
my $sepchar = any( {/,/} @_ ) ? ";" : ",";
But, as already stated, often this is fine:
my $sepchar = grep(/,/, @_) ? ";" : ",";
--
Affijn, Ruud
"Gewoon is een tijger."
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/