Perl是上下文相关的,与很多其它语言有所不同。Perl中的运算和值的解释有时候依赖于围绕此运算或值的上下文。上下文包括数字、字符串、列表和标量。最常用到的有两种上下文:标量上下文和列表上下文。
返回列表值的运算需要一个列表,标量也一样。也就是说,Perl基于期望的返回值是单数还是复数来重载一定的运算。在标量上下文中,所求的表达式返回一个标量值;而在列表上下文中,所求的表达式返回一个标量值的列表。这就是两者之间的区别。
标量上下文对数据是作为数字进行运算还是作为字符串进行运算有影响;而列表上下文则对赋值语句返回的数据以及子程序或系统函数的参数和返回值有影响;
相应地,函数为每一个参数提供一个标量上下文和一个列表上下文。
例1:int(<STDIN>);
这个函数为它的参数提供了一个标量上下文;由于这个函数是要把它的参数转换成一个整数,只需要一个标量参数就可以了,所以,<STDIN>操作就只读进去一个标量数据作为参数传递给int(),如果输入了多个数据,则只传递第一个数据给函数int(),并返回转换后的整数标量值。
例2:sort(<STDIN>);
这个函数是对一个列表中的元素进行排序,它需要一个列表作为参数来操作,所以这个函数为<STDIN>操作提供了一个