Perl 小于和大于符号加在一起
我遇到了这段代码:Perl 小于和大于符号加在一起,perl,Perl,我遇到了这段代码: #!perl use strict; my %hash; while(my $line = <>) { chomp($line); $hash{$line}++; } map {print $_ ."\n"} keys %hash; #!perl 严格使用; 我的%hash; while(我的$line=){ chomp($line); $hash{$line}++; } 映射{print$\.'\n'}键%hash; 我想理解while(my$lin
#!perl
use strict;
my %hash;
while(my $line = <>) {
chomp($line);
$hash{$line}++;
}
map {print $_ ."\n"} keys %hash;
#!perl
严格使用;
我的%hash;
while(我的$line=){
chomp($line);
$hash{$line}++;
}
映射{print$\.'\n'}键%hash;
我想理解while(my$line=)和映射{print$。“\n”}键%hash的语句的含义
不是正则表达式,而是您从句柄读取的方式
下面是关于的perl文档
具体而言:
null filehandle很特别:它可以用来模拟sed和awk的行为,以及任何其他接受文件名列表的Unix过滤程序,对所有文件名的每一行输入都执行相同的操作。来自的输入来自标准输入或命令行上列出的每个文件。它的工作原理如下:第一次求值时,将检查@ARGV数组,如果它为空,$ARGV[0]将设置为“-”,打开时将提供标准输入。然后将@ARGV数组作为文件名列表进行处理
因此,除非您通过@ARGV
指定了文件名,否则执行
将从标准输入中读取。
不是正则表达式,它是来自空文件句柄的读线
如果你写信
while ( <STDIN> ) { ... }
while(){…}
然后从STDIN
文件句柄读取
但是,如果将
保留为空,那么Perl将从ARGV
文件句柄中读取,该句柄按顺序给出命令行上指定的所有文件的行(ARGV
的内容),或者如果@ARGV
为空,则从STDIN
(通常是键盘)中读取行。谢谢!我认为它‘不等于’!您还可以解释一下while(my$line=)
和map{print$\“\n”}键%hash的语句的含义吗代码>while语句做两件事:首先它将读取行分配给$line
,然后如果$line
是真的,它将执行块。通常,这用于为每行输入执行一个代码块。map
功能不可用。不过说真的,检查一下perldocs。它们非常有用。@chandra:有些语言使用
作为“不相等”运算符。Perl不是其中之一。Perl和C一样,使用=
表示不等式(或者,与C不同,ne
表示字符串操作数)。最好不要在注释中进入问答对话,因为其他人无法搜索此类答案。谢谢!您还可以解释一下while(my$line=)和map{print$\“\n”}键%hash;时语句的含义吗@Stack Overflow不是一个论坛,你应该用评论来澄清问题或解决方案,而不是问新问题。如果你想问别的问题,那么就发布一个新的问题,尽管我相信,只要稍加努力,你可以自己找到答案。顺便说一下,map{print$\.\n“}键%hash
是对map
的滥用,对于键%hash