The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
## name Non-topic explicitness
## failures 0
## cut

my $foo = 'Whatever';

$foo =~ /foo/;
$foo =~ m/foo/;
$foo =~ s/foo/bar/;
$foo =~ tr/a-mn-z/n-za-m/;

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

## name Topical exclusion
## failures 0
## cut

/foo/;
m/foo/;
s/foo/bar/;
tr/a-mn-z/n-za-m/;

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

## name Useless topic
## failures 10
## cut

$_ =~ /foo/;
$_ =~ m/foo/;
$_ =~ s/foo/bar/;
$_ =~ tr/a-mn-z/n-za-m/;
$_ =~ y/a-mn-z/n-za-m/;

# Plus some without spacing

$_=~/foo/;
$_=~m/foo/;
$_=~s/foo/bar/;
$_=~tr/a-mn-z/n-za-m/;
$_=~y/a-mn-z/n-za-m/;

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

## name Useless topic in a negative match
## failures 5
## cut

$_ !~ /foo/;
$_ !~ m/foo/;
$_ !~ s/foo/bar/;
$_ !~ tr/a-mn-z/n-za-m/;
$_ !~ y/a-mn-z/n-za-m/;

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

## name Match against qr object
## failures 2
## cut

$_ =~ qr/bar/;
$_ !~ qr/bar/;

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

## name Not useless matching against a variable
## failures 0
## cut

my $non_useless_topic_regex = qr/foo.+bar/;
$_ =~ $non_useless_topic_regex;

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

## name More complex constructions
## failures 8
## cut

my $x = scalar( grep { $_ =~ m/^INFO: .*$/ } @foo );
$x = 3 if $_ !~ s/foo/bar/;
$_ =~ s/\s+$// foreach ($name, $zip, $phone);
our @paths = grep { $_ =~ /./ } <DATA>; # get non-blank lines from the end
next if $_ =~ m/^\s*#/;
$condition_count += ($_ =~ tr/,/,/) foreach values %requirements;
my ( $v ) = grep { $_ =~ /^\s*our\s+\$VERSION\s*=\s*['"]\d/ } <$fh>;
assert( ! grep { $_ =~ m/\|/ } @$suggestions, 'no suggestion contains a pipe character (reserved for future field separator)' );

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

## name Potential false positives, but none should fail.
## failures 0
## cut

$x =~ /foo/;
$_ += /foo/;
print s/x/y/;
foo(tr/x/y/);
+tr/x/y/;
# $_ =~ /foo/
'foo' =~ $_;
$_ =~ $some_qr_var;
ok( ( grep { $_ =~ $regwarn } ( $title->warnings() ) ), 'expected warning text reported' );
my ( $line, $dummy ) = grep { $_ =~ $stat->{regex} } @contents;
if ($_ !~ $pat) { foo(); }
=head1 $_ =~ /foo/

#-----------------------------------------------------------------------------
# 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 :