Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
Perl::Critic::PPerl::CUsercContributeduPerlnDocumentationohibitUselessTopic(3)

NAME
       Perl::Critic::Policy::BuiltinFunctions::ProhibitUselessTopic - Don't
       pass $_ to built-in functions that assume it, or	to most	filetest
       operators.

AFFILIATION
       This Policy is part of the Perl::Critic distribution.

DESCRIPTION
       There are a number of places where $_, or "the topic" variable, is
       unnecessary.

   Topic unnecessary for certain Perl built-in functions
       Many Perl built-in functions will operate on $_ if no argument is
       passed.	For example, the "length" function will	operate	on $_ by
       default.	 This snippet:

	   for ( @list ) {
	       if ( length( $_ ) == 4 )	{ ...

       is more idiomatically written as:

	   for ( @list ) {
	       if ( length == 4	) { ...

       In the case of the "split" function, the	second argument	is the one
       that defaults to	$_.  This snippet:

	   for ( @list ) {
	       my @args	= split	/\t/, $_;

       is better written as:

	   for ( @list ) {
	       my @args	= split	/\t/;

       There is	one built-in that this policy does not check for: "reverse"
       called with $_.

       The "reverse" function only operates on $_ if called in scalar context.
       Therefore:

	   for ( @list ) {
	       my $backwards = reverse $_;

       is better written as:

	   for ( @list ) {
	       my $backwards = reverse;

       However,	the distinction	for scalar vs. list context on "reverse" is
       not yet working.	 See KNOWN BUGS	below.

   Topic unnecessary for most filetest operators
       Another place that $_ is	unnecessary is with a filetest operator.

	   # These are identical.
	   my $size = -s $_;
	   my $size = -s;

	   # These are identical.
	   if (	-r $_ )	{ ...
	   if (	-r ) { ...

       The exception is	after the "-t" filetest	operator, which	instead	of
       defaulting to $_	defaults to "STDIN".

	   # These are NOT identical.
	   if (	-t $_ )	{ ...
	   if (	-t ) { ...  # Checks STDIN, not	$_

KNOWN BUGS
       This policy flags a false positive on "reverse" called in list context,
       since "reverse" in list context does not	assume $_.

	   my $s = reverse( $_ ); # $_ is useless.
	   my @a = reverse( $_ ); # $_ is not useless here.

CONFIGURATION
       This Policy is not configurable except for the standard options.

AUTHOR
       Andy Lester <andy@petdance.com>

COPYRIGHT
       Copyright (c) 2013 Andy Lester <andy@petdance.com>

       This library is free software; you can redistribute it and/or modify it
       under the terms of the Artistic License 2.0.

perl v5.24.1   Perl::Critic::Policy::BuiltinFunctions::ProhibitUselessTopic(3)

NAME | AFFILIATION | DESCRIPTION | KNOWN BUGS | CONFIGURATION | AUTHOR | COPYRIGHT

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=Perl::Critic::Policy::BuiltinFunctions::ProhibitUselessTopic&sektion=3&manpath=FreeBSD+12.1-RELEASE+and+Ports>

home | help