请帮我理解这句话中的片段;编程Perl“;书
我读了汤姆·克里斯蒂安森、布赖恩·德福伊、拉里·沃尔、乔恩·奥旺特的《Perl编程》。以下是我未能理解的文本(我不理解的确切位置用粗体标记): 您真正想知道的是哪些操作符提供了哪些上下文 到它们的操作数。碰巧,你可以很容易地分辨出是哪一个 提供列表上下文,因为它们的语法中都有列表 说明。其他一切都提供标量上下文。通常地 这很直观。如果需要,可以强制标量上下文 通过使用<代码>标量< /代码>列表中的参数< /强> 伪函数。Perl无法在上下文中强制列表上下文, 因为您想要列表上下文的任何地方都已经提供了它 通过某些控制功能的列表 为方便起见,我想提出以下问题:请帮我理解这句话中的片段;编程Perl“;书,perl,perl-context,Perl,Perl Context,我读了汤姆·克里斯蒂安森、布赖恩·德福伊、拉里·沃尔、乔恩·奥旺特的《Perl编程》。以下是我未能理解的文本(我不理解的确切位置用粗体标记): 您真正想知道的是哪些操作符提供了哪些上下文 到它们的操作数。碰巧,你可以很容易地分辨出是哪一个 提供列表上下文,因为它们的语法中都有列表 说明。其他一切都提供标量上下文。通常地 这很直观。如果需要,可以强制标量上下文 通过使用标量< /代码>列表中的参数< /强> 伪函数。Perl无法在上下文中强制列表上下文, 因为您想要列表上下文的任何地方都已经提供了
这很简单,就像课文上说的。请查看
perldoc-f print
示例:
print FILEHANDLE LIST
print FILEHANDLE
print LIST
正如上面所说,print
接受列表参数,这意味着print
之后发布的任何内容都在列表上下文中。对于参数表示为列表的任何函数,这是相同的
使用scalar
函数,您可以覆盖此列表上下文,这样就不会在列表上下文中计算参数。例如,文件句柄readline语句,例如:
my $line = <$fh>;
读取行位于列表上下文中,这意味着将读取文件中所有剩余的行。您可以通过将readline语句置于标量上下文中来重写该语句:
print scalar <$fh>;
打印标量;
然后你只需要读一行。更确切地说,可以在列表中间执行标量上下文:
print @list, scalar <$fh>, @list2;
print@list,scalar,@list2;
这大概就是你那句话中提到的
print @list, scalar <$fh>, @list2;