Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things


by root (Scribe)
on Dec 23, 1999 at 00:50 UTC ( #1160=perlfunc: print w/replies, xml ) Need Help??


See the current Perl documentation for B::Lint.

Here is our local, out-dated (pre-5.6) version:

B::Lint - Perl lint

perl -MO=Lint[,OPTIONS]

The B::Lint module is equivalent to an extended version of the -w option of perl. It is named after the program lint which carries out a similar process for C programs.


Option words are separated by commas (not whitespace) and follow the usual conventions of compiler backend options. Following any options (indicated by a leading -) come lint check arguments. Each such argument (apart from the special all and none options) is a word representing one possible lint check (turning on that check) or is no-foo (turning off that check). Before processing the check arguments, a standard list of checks is turned on. Later options override earlier ones. Available options are:


Produces a warning whenever an array is used in an implicit scalar context. For example, both of the lines

    $foo = length(@bar);
    $foo = @bar;
will elicit a warning. Using an explicit B<scalar()> silences the
warning. For example,

    $foo = scalar(@bar);
implicit-read and implicit-write

These options produce a warning whenever an operation implicitly reads or (respectively) writes to one of Perl's special variables. For example, implicit-read will warn about these:


and implicit-write will warn about these:


Both implicit-read and implicit-write warn about this:

    for (@a) { ... }

This option warns whenever $_ is used either explicitly anywhere or as the implicit argument of a print statement.


This option warns on each use of any variable, subroutine or method name that lives in a non-current package but begins with an underscore (``_''). Warnings aren't issued for the special case of the single character name ``_'' by itself (e.g. $_ and @_).


This option warns whenever an undefined subroutine is invoked. This option will only catch explicitly invoked subroutines such as foo() and not indirect invocations such as &$subref() or $obj->meth(). Note that some programs or modules delay definition of subs until runtime by means of the AUTOLOAD mechanism.


This option warns whenever one of the regexp variables $', $& or $' is used. Any occurrence of any of these variables in your program can slow your whole program down. See perlre for details.


Turn all warnings on.


Turn all warnings off.


-u Package

Normally, Lint only checks the main code of the program together with all subs defined in package main. The -u option lets you include other package names whose subs are then checked by Lint.


This is only a very preliminary version.


Malcolm Beattie,

Log In?

What's my password?
Create A New User
[Corion]: GotToBTru: Yeah, I started a quick(ly implemented but slowly running) implementation of a program that would guess the "best" configuration (that is, least amount of changes) from my code, but then found that it stops parsing the source as soon as it ..
[GotToBTru]: sadly, it can't do anything about this
[Corion]: ... encounters sub foo($bar,$baz) {, which is something I like nowadays
[Corion]: GotToBTru: Yeah, that stuff is hard to do away automatically ;)
[GotToBTru]: yeah, you mentioned it could not handle signatures
[Corion]: And so far I like signatures and nobody has yet come up to me and screamed at me for implementing a source filter to handle them even on early Perl versions ;)

How do I use this? | Other CB clients
Other Users?
Others scrutinizing the Monastery: (15)
As of 2017-02-27 14:38 GMT
Find Nodes?
    Voting Booth?
    Before electricity was invented, what was the Electric Eel called?

    Results (387 votes). Check out past polls.