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/


Reply via email to