我知道=>
运算符like this
$ cat array.pl
%ages = ('Martin' => 28,
'Sharon' => 35,
'Rikke' => 29,);
print "Rikke is $ages{Rikke} years old\n";
$ perl array.pl
Rikke is 29 years old
$
我认为这只是初始化哈希的语法,但在How can I qualify a variable as const/final in Perl?的答案中,=>
已经像这样使用了
use Readonly;
Readonly my $infilename => "input_56_12.txt";
=>
究竟是什么意思?是否有更多方法可以使用=>
?
答案 0 :(得分:33)
perl中的=>
运算符与逗号基本相同。唯一的区别是,如果左边有一个不带引号的单词,它就像被引用的单词一样对待。所以你可以写Martin => 28
,它与'Martin', 28
相同。
你可以从任何偶数长度列表中创建一个哈希值,这就是你在你的例子中所做的一切。
您的Readonly示例通过省略括号来利用Perl对子例程参数的灵活性。它相当于Readonly(my $infilename, "input_56_12.txt")
。 Readonly是Readonly模块导出的函数,它接受两个参数:引用和值。如果你想了解它们,Readonly的内部是值得的另一个问题。
以下是以意想不到的方式将其用作逗号的示例:
$ perl -e 'print hello => "world\n"'
helloworld
答案 1 :(得分:30)
来自perlop:
=>
运算符是该运算符的同义词 逗号除了它导致它的左边 操作数被解释为一个字符串 如果以字母开头或者 下划线,仅由...组成 字母,数字和下划线。这包括可能的操作数 否则被解释为运营商, 常量,单个数字的V字符串或 函数调用。如果对此有疑问 行为,左操作数可以 明确引用。
否则,=>操作员的行为 与逗号运算符或列表完全相同 参数分隔符,根据 上下文。
例如:
use constant FOO => "something"; my %h = ( FOO => 23 );
相当于:
my %h = ("FOO", 23);
不是:
my %h = ("something", 23);
=>
运算符有帮助 记录之间的对应关系 哈希中的键和值等 列表中的成对元素。%hash = ( $key => $value ); login( $username => $password );
来自 PBP :
我从 Perl最佳实践中找到了一些关于 Fat Commas =>
的好信息,我认为在这里也应该提一下。
最好将胖字逗号保留为以下内容: -
构建哈希:
时使用它my %h = ( FOO => 23 );
或将命名参数传递给子程序,即。,
$text = format_text({FOO => 23, BAR => 30});
或创建常量:
Readonly my $FOO => "23";
有关详细信息,请参阅Perl最佳实践的第4章:值和表达式(Fat逗号)部分。