in reply to Searching tabs in a list of files

I've never had occaison to run into that behavior -- very handy thing to be aware of though! I just had a few TMTOWTDI comments:

This is still easy with grep if you know how to generate the tab character:
grep -Hn '<TAB>' *
Where "<TAB>" represents a tab character. To type the tab, first hit ctrl-v, then hit TAB -- that should insert an actual tab character. (note it probably won't copy/paste correctly, so be careful if you're copying the grep command from a notes file or something)

Also, cat can be useful here as well (-n shows line numbers, -T shows TABs as "^I"):
cat -nT /tmp/foo | grep '\^I'

Couple alternative perl ways:
perl -lne 'print "$ARGV:$.:$_" if /\t/; close ARGV if eof' *
Identical to yours except i believe that the ... } continue { ... } { construct is unnecessary here and confusing at first glance until the reader remembers (if they know) that this is inserted (because of the -n) in a while (<>) { ... } loop.

Since the original problem is that the line numbers increase accross ARGV files, this, while simple, isn't sufficient (works for only a single file) ...
perl -ne 'print "$ARGV:$.:$_" if /\t/' /tmp/foo
... so Yet Another Alternative :) would be to just wrap that in a shell (e.g. bash here) loop:
for f in * ; do perl -ne 'print "$ARGV:$.:$_" if /\t/' $f; done
(more awkward/more steps, but potentially useful in certains cases)