One-liner to count the number of lines in a file
There is a cute Perl one-liner to count the number of lines in a file:
perl -nE'}{say$.' foo.txt
Let's see how perl parses this one-liner:
$ perl -MO=Deparse -nE'}{say$.' foo.txt
BEGIN {
$^H{'feature_unicode'} = q(1);
$^H{'feature_say'} = q(1);
$^H{'feature_state'} = q(1);
$^H{'feature_switch'} = q(1);
}
LINE: while (defined($_ = <ARGV>)) {
();
}
{
say $.;
}
-e syntax OK
So -E
turns on the special features (we only use say
here) and -n
provides the boilerplate code. As for $.
, perldoc perlvar
says that it is
the current line number for the last filehandle accessed.
Leave a comment