📜  珀尔 |列出上下文敏感性

📅  最后修改于: 2022-05-13 01:54:26.141000             🧑  作者: Mango

珀尔 |列出上下文敏感性

介绍
在 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 "$x $y\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,我们需要将一个数组分配给另一个数组。
例子:

#!/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 语句用于 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 条件为真,它会触发 if 语句的内容,但如果数组为空,则 if 条件为假,因此它不会执行 if- 中的语句陈述。

在列表上下文中阅读:


“STDIN”是 Perl 中的 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 = ;
  
# Used to remove extra line of spaces
chomp @y;
  
# Printing the required output
print "The number of names are: " . 
                 scalar(@y) . "\n"; 
输出:

以下是该程序的工作原理:
第一步:使用回车键,将要存储在数组中的名称一一输入。
步骤 2:在 Linux 系统中按 Ctrl-D,在 Windows 系统中按 Ctrl-Z 表示输入结束。
第三步: chomp 用于删除每次输入后添加的额外行。
第 4 步:使用标量打印数组中元素的数量,因为“标量上下文中的数组”只能返回数组的长度。