> 'PIPE stem dirstem.' , > '| find BUILD', > '| specs word -1;-1 1' , > '| var LastWord' > > And maybe throw in a 'take 1' to stop reading the stem if there's only one > occurrence of a line beginning with BUILD? > > The concerns expressed here are unfounded. As we know "var" (when used like this) will only take the first record it gets. The stage knows that too, and severs its primary input when it has a record, the end-of-file will propagate back through "specs" and "find" because they have nothing else to do either, and that will discourage "stem" from producing more records than needed to satisfy "var". Whether there's just one match or multiple ones.
To experiment: add a "count" in the pipeline and replace the last "var" by a "stem" stage to see the difference. Performance here is the least concern (the cost of an added "take" is trivial). Understanding record delay and how end-of-file propagates is important to construct pipeline refineries that don't leak. The options for improvement are to move this function into the pipeline that produced the 'dirstem' array in the first place. If nothing else, you could tag this on there and avoid reading the stem just to find this record. Depending on the rest of the code, you might not even need the stem anymore. Sir Rob the Plumber
