Perl 列表的上下文敏感度

Perl 列表的上下文敏感度

简介

在Perl中,函数调用、术语和语句的解释是不一致的,这取决于它的语境。在Perl中,有两个关键的上下文,即列表上下文和标量上下文。在列表上下文中,Perl给出的是元素的列表。但在标量上下文中,它返回数组中的元素数。
Perl在 “列表上下文 “中假定列表值,而列表可以有任何数量的元素,也可以只有一个元素,甚至可以是荒废的。

创建列表 上下文

列表上下文可以通过使用数组和列表来生成。

  • 对一个数组的赋值:

    示例:

@y = LIST;
@y = @z;
@y = localtime();

在这里,localtime()是Perl中的一个函数名称,它在数组中揭示了时间的数字描述。

  • 对一个列表的赋值:

示例:

(x,y) = LIST;
($x) =  LIST;

在这里,即使List只有一个元素,List也可以创建List Context。

例子

#!/usr/bin/perl
# Perl program of creating List Context
  
# array of elements
my @CS = ('geeks', 'for', 'geeks', 'articles'); 
              
# Assignment to a list 
my (x,y) = @CS; 
  
# Assignment to an Array
my @z = @CS;        
      
# Assignment of a function
# to an Array
my @t = localtime();
              
# Displays two elements of an
# array in List
print "xy\n";
  
# Displays an array of elements
print "@z\n";    
  
# Displays time stored in array 
# in number format
print @t;

输出。

geeks for
geeks for geeks articles
201761121191690

这里,在向List赋值时,List中有两个标量,即x和y,所以只赋值了数组的两个元素。

List Context中的数组

为了使用一个数组来激发List Context,我们需要将一个数组赋值给另一个数组。

例子

#!/usr/bin/perl
  
# Program for arrays in List Context
use strict;
use warnings;
use 5.010;
  
my @x = ('computer_', 'science_', 'portal_',
         'for_', 'GeeksforGeeks');
  
# Assignment of an array to 
# another array
my @y = @x; 
  
# Printing the new array
print @y;

输出。

computer_science_portal_for_GeeksforGeeks

这里,一个数组的元素被复制到另一个数组。

if-语句在列表中的使用

if-statement在List上下文中使用,只有当数组中存在元素时,才显示’if’所包含的语句。

例子

#!/usr/bin/perl
  
# Program to display content of if-statement
use strict;
use warnings;
use 5.010;
  
my @x = ('G', 'f', 'G');
   
# Statement within 'if' will be executed 
# only if the array is not empty
if (@x)
{
    print "GeeksforGeeks";
}

输出。

GeeksforGeeks

在这里,如果所述的数组有一些元素,那么if-condition为真,并引发if-statement的内容,但如果数组为空,那么if-condition为假,所以它不执行if-statement中的语句。

在列表背景下的读取。

在Perl中,”STDIN “是一个readline操作符。为了将readline操作符放在List Context中,需要将该操作符指定为一个数组。

例子

#!/usr/bin/perl
use strict;
use 5.010;
  
# Asking user to provide input 
print "Enter the list of names:\n";
  
# Getting input from user 
my @y = <STDIN>;
  
# Used to remove extra line of spaces
chomp @y;
  
# Printing the required output
print "The number of names are: " . 
                 scalar(@y) . "\n"; 

输出:

Perl  列表的上下文敏感度

以下是这个程序的工作原理:

第1步: 使用回车键逐一输入要存储在数组中的名字。

第2步: 在Linux系统中按下Ctrl-D,而在Windows系统中按下Ctrl-Z表示输入结束。

第3步: 使用chomp删除每次输入后增加的行。

第4步: 使用scalar打印数组中的元素数,因为 “scalar Context中的数组 “只能返回数组的长度。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程