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/