http://qs321.pair.com?node_id=984041


in reply to Re: SQL script processor and executor
in thread SQL script processor and executor

map{$_ && s/\s.*//} $server,$user,$passwd,$dbconn,$dbuser,$dbpasswd,$s +hpath;

Map goes through the trouble of creating and returning a result for you. If you don't intend to use that result, you should probably not use map for the purpose.

I would do this instead:

s/\s.*// foreach ($server,$user,$passwd,$dbconn,$dbuser,$dbpasswd); $shpath =~ s/\s+.*// if $shpath;

I'm on the fence about treating $shpath separately. There's no reason to test all the variables (according to the OP code), just the $shpath variable. So testing all the other values is wasted CPU cycles. On the other hand, CPU cycles may not be important in this situation.

Replies are listed 'Best First'.
Re^3: SQL script processor and executor
by Mr. Muskrat (Canon) on Jul 27, 2012 at 19:27 UTC

    "Map goes through the trouble of creating and returning a result for you."

    That has not been true for a while now. "map in void context is no longer expensive. map is now context aware, and will not construct a list if called in void context." -- perl581delta

      I stand corrected.

      However I still wouldn't use map for this purpose.