珀尔 |列出上下文敏感性
介绍
在 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 语句用于 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 步:使用标量打印数组中元素的数量,因为“标量上下文中的数组”只能返回数组的长度。