enn*_*ler 81
while (<>) {
print;
}
Run Code Online (Sandbox Code Playgroud)
将从命令行中指定的文件或stdin读取(如果没有给出文件)
如果在命令行中需要此循环构造,则可以使用-n
选项:
$ perl -ne 'print;'
Run Code Online (Sandbox Code Playgroud)
在这里,您只需将代码{}
从第一个示例放入''
第二个示例
小智 44
这提供了一个命名变量来使用:
foreach my $line ( <STDIN> ) {
chomp( $line );
print "$line\n";
}
Run Code Online (Sandbox Code Playgroud)
要读取文件,请将其管道输入:
program.pl < inputfile
Run Code Online (Sandbox Code Playgroud)
Nei*_*est 14
在某些情况下,"最简单"的方式是利用-n
开关.它隐式地用while(<>)
循环包装你的代码并灵活地处理输入.
在slickestWay.pl
:
#!/usr/bin/perl -n BEGIN: { # do something once here } # implement logic for a single line of input print $result;
在命令行:
chmod +x slickestWay.pl
Run Code Online (Sandbox Code Playgroud)
现在,根据您的输入,执行以下操作之一:
等待用户输入
./slickestWay.pl
Run Code Online (Sandbox Code Playgroud)从参数中命名的文件中读取(不需要重定向)
./slickestWay.pl input.txt
./slickestWay.pl input.txt moreInput.txt
Run Code Online (Sandbox Code Playgroud)使用管道
someOtherScript | ./slickestWay.pl
Run Code Online (Sandbox Code Playgroud)BEGIN
如果你需要初始化某种面向对象的接口,例如Text :: CSV或其他一些,你可以添加到shebang中,这个块是必要的-M
.
-l
并且-p
也是你的朋友.
el.*_*ado 13
你需要使用<>运算符:
while (<>) {
print $_; # or simply "print;"
}
Run Code Online (Sandbox Code Playgroud)
哪个可以压缩到:
print while (<>);
Run Code Online (Sandbox Code Playgroud)
任意档案:
open F, "<file.txt" or die $!;
while (<F>) {
print $_;
}
close F;
Run Code Online (Sandbox Code Playgroud)
小智 8
如果有一个原因你不能使用上面ennuikiller提供的简单解决方案,那么你将不得不使用Typeglobs来操作文件句柄.这是更多的工作.此示例从文件复制$ARGV[0]
到其中$ARGV[1]
.如果未指定文件,则默认为STDIN
和STDOUT
.
use English;
my $in;
my $out;
if ($#ARGV >= 0){
unless (open($in, "<", $ARGV[0])){
die "could not open $ARGV[0] for reading.";
}
}
else {
$in = *STDIN;
}
if ($#ARGV >= 1){
unless (open($out, ">", $ARGV[1])){
die "could not open $ARGV[1] for writing.";
}
}
else {
$out = *STDOUT;
}
while ($_ = <$in>){
$out->print($_);
}
Run Code Online (Sandbox Code Playgroud)
做
$userinput = <STDIN>; #read stdin and put it in $userinput
chomp ($userinput); #cut the return / line feed character
Run Code Online (Sandbox Code Playgroud)
如果你只想读一行
归档时间: |
|
查看次数: |
136772 次 |
最近记录: |