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


in reply to perl one liner for csv file one field

cat /come/and/play/with/$i | perl -ne 'print if length((split /,/)[10] +) > 6'
BTW, I cannot restrain myself from commenting anytime I see cat being used like this because, long ago on usenet, Tom Christiansen wrote: "If you find yourself calling cat with just one argument, you're probably doing something silly".

Following Tom's advice, I suggest you lose the cat (and the unnecessary pipe) by replacing:

cat /come/and/play/with/$i | perl -ne 'print if length((split /,/)[10] +) > 6'
with simply:
perl -ne 'print if length((split /,/)[10]) > 6' /come/and/play/with/$i

Update: Added content from Useless Use of Cat Award (thanks choroba):

The venerable Randal L. Schwartz hands out Useless Use of Cat Awards from time to time; you can see some recent examples in Deja News. (The subject line really says "This Week's Useless Use of Cat Award" although the postings are a lot less frequent than that nowadays). The actual award text is basically the same each time, and the ensuing discussion is usually just as uninteresting, but there are some refreshing threads there among all the flogging of this dead horse. The oldest article Deja News finds is from 1995, but it's actually a followup to an earlier article. By Internet standards, this is thus an Ancient Tradition.

Nearly all cases where you have:

cat file | some_command and its args ...
you can rewrite it as:
<file some_command and its args ...
and in some cases you can move the filename to the arglist as in:
some_command and its args ... file

Also mentioned at this site are:

Update: See also: