如何双箭头(=>)运算符在Perl的工作?如何双箭头(=>)运算符在Perl的工作?(H

2019-05-12 02:05发布

我知道哈希使用的=>运营商, 像这样

$ 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
$

我以为这只是语法来初始化哈希值,但在回答我怎么能在Perl资格的变量为const /决赛? , =>已使用这样

use Readonly;
Readonly my $infilename => "input_56_12.txt";

究竟是什么=>是什么意思? 是否有更多的方法,使=>可以用吗?

Answer 1:

=>运算符在Perl是基本相同逗号。 唯一的区别是,如果有一个在左边带引号的词,它就像一个引词处理。 所以,你可以写Martin => 28这将是一样的'Martin', 28

您可以从任何偶数长名单,这是所有你在你的例子做作出的哈希值。

你只读例如通过省略括号利用Perl的子程序带参数的灵活性。 它等同于Readonly(my $infilename, "input_56_12.txt") 只读是由只读模块采用两个参数导出的函数:参考,和一个值。 如果你想了解他们只读的内部是值得的另一个问题。

下面是使用它作为以意想不到的方式逗号的例子:

$ perl -e 'print hello => "world\n"'
helloworld


Answer 2:

从perlop得到 :

=>运算符是除它导致如果它以字母开头或下划线且仅由字母,数字和下划线是由它的左操作数被解释为一个字符串逗号的同义词。

这包括那些可能被解释为运算符,常量,单号v-字符串或函数调用操作数。 如果对这种行为的疑问,左操作数可以明确地引用。

否则,=>操作员的行为完全逗号运算符或list参数分离器,根据上下文。

例如:

 use constant FOO => "something"; my %h = ( FOO => 23 ); 

相当于:

 my %h = ("FOO", 23); 

它不是:

 my %h = ("something", 23); 

=>运算符是在记录键和值在散列,并且在列出了其他成对的元件之间的对应关系有帮助的

 %hash = ( $key => $value ); login( $username => $password ); 

PBP:

我发现从Perl的最佳实践 逗号一些好的信息=>我认为这应该是很高兴在这里提过了。

这是更好地保留脂肪逗号专门为以下几点: -

构建一个哈希时使用它:

my %h = ( FOO => 23 );

或者当传递命名参数的子程序即,

$text = format_text({FOO => 23, BAR => 30});

创建一个常数时:

 Readonly my $FOO => "23";

欲了解更多详情请参阅第4章:Perl的最佳实践的数值和表达式(FAT逗号)部分。



文章来源: How does double arrow (=>) operator work in Perl?