The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
## name Simple unused, single, unassigned lexical.
## failures 1
## cut

my $x;

#-----------------------------------------------------------------------------

## name Simple unused, multiple, unassigned lexicals.
## failures 3
## cut

my ($x, @z, %y);

#-----------------------------------------------------------------------------

## name Simple unused assigned lexicals.  Not going to handle this yet.
## failures 0
## cut

# Need to look out for RAII.
my $y = foo();

#-----------------------------------------------------------------------------

## name List assignment.  Not going to handle this yet.
## failures 0
## cut

sub foo {
    my ($b, $y) = @_;
}

#-----------------------------------------------------------------------------

## name Simple unused explicit global.
## failures 0
## cut

our $x;

#-----------------------------------------------------------------------------

## name Simple unused implicit global.
## failures 0
## cut

$x;

#-----------------------------------------------------------------------------

## name Simple unused localized.
## failures 0
## cut

local $x;

#-----------------------------------------------------------------------------

## name Simple used lexical scalar.
## failures 0
## cut

my $x = 1;

print $x;

#-----------------------------------------------------------------------------

## name Simple used lexical array.
## failures 0
## cut

my @x;

$x[0] = 5;

#-----------------------------------------------------------------------------

## name Simple used lexical hash.
## failures 0
## cut

my %foo;

$foo{bar} = -24;

#-----------------------------------------------------------------------------

## name Shadowed variable.  No going to handle this yet.
## failures 0
## cut

my $x = 2;

{
    my $x = 1;
    blah();
}

#-----------------------------------------------------------------------------

## name Separate lexicals.  No going to handle this yet.
## failures 0
## cut

{
    my $x = 2;
}

{
    my $x = 1;
    blah();
}

#-----------------------------------------------------------------------------

## name Closures
## failures 0
## cut

{
   my $has_graphviz = undef;

   sub has_graphviz {
      if (!defined $has_graphviz) {
         $has_graphviz = eval { require GraphViz; 1; } ? 1 : 0;
      }
      return $has_graphviz;
   }
}

#-----------------------------------------------------------------------------

## name Interpolation in replacement portion of s/.../.../smx
## failures 0
## cut

my %foo;

s/ ( \w+ ) /$foo{$1}/smx;

#-----------------------------------------------------------------------------

## name Interpolation in replacement portion of s/.../.../smxe
## failures 0
## cut

my %foo;

s/ ( \w+ ) / $foo{$1} /smxe;

#-----------------------------------------------------------------------------

## name Variable used in regexp embedded code
## failures 0
## cut

my %foo;

m/ (?{ $foo{bar} }) /smx;

#-----------------------------------------------------------------------------
# Local Variables:
#   mode: cperl
#   cperl-indent-level: 4
#   fill-column: 78
#   indent-tabs-mode: nil
#   c-indentation-style: bsd
# End:
# ex: set ts=8 sts=4 sw=4 tw=78 ft=perl expandtab shiftround :