perl::critic::policy::inputoutput::prohibitexplicitstdin(3pm) [debian man page]
Perl::Critic::Policy::InputOutput::ProhibitExplicitStdinUser)Contributed Perl DocumenPerl::Critic::Policy::InputOutput::ProhibitExplicitStdin(3pm)NAME
Perl::Critic::Policy::InputOutput::ProhibitExplicitStdin - Use "<>" or "<ARGV>" or a prompting module instead of "<STDIN>".
AFFILIATION
This Policy is part of the core Perl::Critic distribution.
DESCRIPTION
Perl has a useful magic filehandle called *ARGV that checks the command line and if there are any arguments, opens and reads those as
files. If there are no arguments, *ARGV behaves like *STDIN instead. This behavior is almost always what you want if you want to create a
program that reads from "STDIN". This is often written in one of the following two equivalent forms:
while (<ARGV>) {
# ... do something with each input line ...
}
# or, equivalently:
while (<>) {
# ... do something with each input line ...
}
If you want to prompt for user input, try special purpose modules like IO::Prompt.
CONFIGURATION
This Policy is not configurable except for the standard options.
CAVEATS
Due to a bug in the current version of PPI (v1.119_03) and earlier, the readline operator is often misinterpreted as less-than and greater-
than operators after a comma. Therefore, this policy misses important cases like
my $content = join '', <STDIN>;
because it interprets that line as the nonsensical statement:
my $content = join '', < STDIN >;
When that PPI bug is fixed, this policy should start catching those violations automatically.
CREDITS
Initial development of this policy was supported by a grant from the Perl Foundation.
AUTHOR
Chris Dolan <cdolan@cpan.org>
COPYRIGHT
Copyright (c) 2007-2011 Chris Dolan. Many rights reserved.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. The full text of this license
can be found in the LICENSE file included with this module
perl v5.14.2 2012-06-07 Perl::Critic::Policy::InputOutput::ProhibitExplicitStdin(3pm)
Check Out this Related Man Page
Perl::Critic::Policy::InputOutput::ProhibitReadlineInForUser(Contributed Perl DocumPerl::Critic::Policy::InputOutput::ProhibitReadlineInForLoop(3)NAME
Perl::Critic::Policy::InputOutput::ProhibitReadlineInForLoop - Write "while( $line = <> ){...}" instead of "for(<>){...}".
AFFILIATION
This Policy is part of the core Perl::Critic distribution.
DESCRIPTION
Using the readline operator in a "for" or "foreach" loop is very slow. The iteration list of the loop creates a list context, which causes
the readline operator to read the entire input stream before iteration even starts. Instead, just use a "while" loop, which only reads one
line at a time.
for my $line ( <$file_handle> ){ do_something($line) } #not ok
while ( my $line = <$file_handle> ){ do_something($line) } #ok
CONFIGURATION
This Policy is not configurable except for the standard options.
AUTHOR
Jeffrey Ryan Thalhammer <jeff@imaginative-software.com>
COPYRIGHT
Copyright (c) 2005-2011 Imaginative Software Systems. All rights reserved.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. The full text of this license
can be found in the LICENSE file included with this module.
perl v5.16.3 2014-06-09 Perl::Critic::Policy::InputOutput::ProhibitReadlineInForLoop(3)
can you redirect STDIN with command arguments?
I have tried this approach:
# ./script -option <argument1> <argument2> 0<$2
# $2: ambiguous redirect
Is this possible? (4 Replies)
I want to be able to call in my file and make it do it's magic by basically giving it:
FileNAME.pl searchTerm fileToSearch
It runs, and gives me the answers I want, however, it gives me an error:
Can't open GAATTC: No such file or directory at .//restriction_map_better.pl
line 15... (2 Replies)
i wanna passing an argument which read in a file or a set of files if the files are given in the command line, otherwise use STDIN if no file argument.
i got something like that, but it is not really working.
so can anyone help me? which one is better to use for and how? Use perl.
Thank you
... (0 Replies)
Hi,
I am somewhat new to Perl and currently checking it out. I have a problem testing, if there is nothing being piped in to that script.
I am reading input from STDIN this way:
while( defined($line = <STDIN>) ) {
chomp($line);
if( $line =~ m/($ARGV)/g ) {
... (7 Replies)