sub search_text { # The utility procedure below searches for all instances of a given # string in a text widget and applies a given tag to each instance found. # Arguments: # # w - The window in which to search. Must be a text widget. # string - Reference to the string to search for. The search is done # using exact matching only; no special characters. # tag - Tag to apply to each instance of a matching string. # kind rexexp or exact my($w, $string, $tag, $kind) = @_; return unless ref($string) && length($$string); $w->tagRemove($tag, qw/0.0 end/); my($current, $length) = ('1.0', 0); while (1) { $current = $w->search(-count => \$length, "-$kind", $$string, $current, 'end'); last if not $current; warn "Posn=$current count=$length\n", $w->tagAdd($tag, $current, "$current + $length char"); $current = $w->index("$current + $length char"); } } # end search_text