双箭头(>;)操作符在Perl中是如何工作的?

双箭头(>;)操作符在Perl中是如何工作的?,perl,hash,operators,perl-data-structures,Perl,Hash,Operators,Perl Data Structures,我知道=>运算符的哈希用法 我认为这只是初始化哈希的语法,但在对的回答中,=>是这样使用的 use Readonly; Readonly my $infilename => "input_56_12.txt"; =>到底是什么意思?有更多的方法可以使用=>吗?perl中的=>操作符基本上与逗号相同。唯一的区别是,如果左边有一个不带引号的单词,它会被视为带引号的单词。因此,您可以编写Martin=>28,这与'Martin',28相同 您可以从任意偶数长度的列表中创建哈希,这就是您在示例中

我知道
=>
运算符的哈希用法

我认为这只是初始化哈希的语法,但在对的回答中,
=>
是这样使用的

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

=>
到底是什么意思?有更多的方法可以使用
=>
吗?

perl中的
=>
操作符基本上与逗号相同。唯一的区别是,如果左边有一个不带引号的单词,它会被视为带引号的单词。因此,您可以编写
Martin=>28
,这与
'Martin',28
相同

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

您的只读示例通过省略括号来利用Perl在子例程参数方面的灵活性。它相当于
只读(my$infilename,“input\u 56\u 12.txt”)
。Readonly是由Readonly模块导出的函数,它接受两个参数:引用和值。如果您想了解Readonly的内部结构,还值得再问一个问题

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

$ perl -e 'print hello => "world\n"'
helloworld
发件人:


=>
运算符是 逗号,除了它导致它的左边 要解释为字符串的操作数 如果它以字母或字母开头 下划线和仅由 字母、数字和下划线

这包括可能发生错误的操作数 否则将被解释为运算符, 常数、单个v字串或 函数调用。如果对此有疑问 行为,左操作数可以是 明确引用

否则,=>运算符将执行以下操作: 与逗号运算符或列表完全相同 参数分隔符,根据 上下文

例如:

use constant FOO => "something";
my %h = ( FOO => 23 );
相当于:

my %h = ("FOO", 23);
它不是:

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

=>
运算符在以下方面有帮助: 记录两人之间的通信 散列中的键和值,以及其他 列表中的成对元素

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

PBP

my %h = ( FOO => 23 );
 Readonly my $FOO => "23";
我从Perl最佳实践中找到了一些关于Fat逗号
=>
的好信息,我认为在这里也应该提到

最好只为以下事项保留fat逗号:-

在构建哈希时使用它:

my %h = ( FOO => 23 );
 Readonly my $FOO => "23";
或者将命名参数传递给子例程时

$text = format_text({FOO => 23, BAR => 30});
或者当创建一个常数时:

my %h = ( FOO => 23 );
 Readonly my $FOO => "23";

有关更多详细信息,请参阅Perl最佳实践的第4章:值和表达式(Fat逗号)部分。

做什么?它只是一个逗号。您可以将其重写为:
Readonly(我的$infilename,“input_56_12.txt”)。有关只读模块(常数的替代品)的更多详细信息,请参阅“足够公平”。为我辩护,我做了谷歌,谷歌拒绝搜索
=>
。几年后,我们开始搜索这类搜索。奇怪的是,最重要的结果之一是。。。这个问题:)我刚刚被迫第一次阅读Perl脚本,这个问题就出现了。这很有帮助。这真是深奥的东西。真希望有一本关于这种酷东西的书。谁知道呢,也许已经有了。