http://qs1969.pair.com?node_id=34525


in reply to 3 strings to join

From the "gratuitous use of grep" club...
$string = "$a where " . join ' and ',grep {$_} ($b,$c);
Explanation: Read this from right-to-left. The grep takes as arguments a block of code (or a sub) and a list of items and return just the items in the list which the block of code is true for. In this case, the block of code is simply $_, so grep returns all items in the list ($b,$c) which are true (not undef, '', 0, or '0'). The join then takes those true items, and combines that list with ' and '. If there only one item, join omits the ' and '. It then concatenates the resulting string of 'where' clauses to the string formed by "$a where ", to get the resulting string.

Replies are listed 'Best First'.
RE:(even more grep:)3 strings to join
by jptxs (Curate) on Sep 29, 2000 at 02:58 UTC

    nice.

    throw in another join and grep:

    $string = join ' where ', grep {$_} ($first, join ' and ', grep {$_} ( + $b, $c ));
    and it can even handle the case where there are no where clauses...

    -- I'm a solipsist, and so is everyone else. (think about it)