perl - 双箭头 (=>) 运算符在 Perl 中如何工作?

标签 perl hash operators perl-data-structures

我知道 => 运算符的哈希使用,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";

=> 到底是什么意思? => 的使用方式还有更多吗?

最佳答案

perl中的=>运算符与逗号基本相同。唯一的区别是,如果左侧有未引用的单词,则将其视为引用的单词。因此,您可以编写 Martin => 28,这与 'Martin', 28 相同。

您可以从任何偶数长度列表中创建哈希,这就是您在示例中所做的全部操作。

您的只读示例通过省略括号来利用子例程参数的 Perl 灵 active 。它相当于Readonly(my $infilename, "input_56_12.txt")。 Readonly 是 Readonly 模块导出的函数,它有两个参数:引用和值。如果您想了解 Readonly 的内部结构,那么它们值得另一个问题。

下面是一个以意想不到的方式将其用作逗号的示例:

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

关于perl - 双箭头 (=>) 运算符在 Perl 中如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4093895/

相关文章:

linux - 为什么 "kill"与终端和 system() 不同?

windows - 为什么当文件更改时 Perl 的 Win32::ChangeNotify 会触发两个事件?

linux - perl-mechanize 遇到限制 - 开始进行多次调试尝试

ruby - 关于 ruby​​ 中重写 + 运算符的问题

c# - 如何将运算符函数添加到原始数据类型 C#

javascript - 使用 typeof vs === 检查未声明的变量会产生不同的结果

perl - 按 Perl 哈希的哈希值哈希排序

php - 如何使用md5哈希值?

ruby - 从 CSV 导入 Ruby 数组,将第一个字段作为哈希键,然后在给定的标题行中查找字段的值

ruby - 单个 ruby​​ 进程中的数字上的 `hash` 是否一致?