当我将 Perl@ARGV数组分配给一个变量时,如果我不使用引号,它会给出数组中的字符串数,而不是数组中的字符串数。
这叫什么 - 我以为这是取消引用,但事实并非如此。现在我称它为我需要在 Perl 中记住的另一件事。
#!/usr/bin/perl
use strict ;
use warnings;
my $str = "@ARGV" ;
#my $str = @ARGV ;
#my $str = 'geeks, for, geeks';
my @spl = split(', ' , $str);
foreach my $i (@spl) {
print "$i\n" ;
}
Run Code Online (Sandbox Code Playgroud)
如果在 Perl 中将数组分配给标量,则将获得数组中元素的数量。
my @array = (1, 1, 2, 3, 5, 8, 13);
my $scalar = @array; # $scalar contains 7
Run Code Online (Sandbox Code Playgroud)
这被称为“在标量上下文中评估数组”。
如果在 Perl 中用双引号字符串展开数组,则会得到数组元素以空格分隔。
my @array = (1, 1, 2, 3, 5, 8, 13);
my $scalar = "@array"; $scalar contains '1 1 2 3 5 8 13'
Run Code Online (Sandbox Code Playgroud)
这被称为“在双引号字符串中插入数组”。
实际上,在第二个示例中,元素由$"变量的当前内容分隔。该变量的默认值是一个空格。但是你可以改变它。
my @array = (1, 1, 2, 3, 5, 8, 13);
$" = '+';
my $scalar = "@array"; $scalar contains '1+1+2+3+5+8+13'
Run Code Online (Sandbox Code Playgroud)
要存储对数组的引用,您可以获取对数组的引用。
my $scalar = \@array;
Run Code Online (Sandbox Code Playgroud)
或者使用原始数组的元素创建一个新的匿名数组。
my $scalar = [ @array ];
Run Code Online (Sandbox Code Playgroud)
因为我们不知道您实际上要做什么,所以我们不能推荐其中哪一种是最好的方法。
| 归档时间: |
|
| 查看次数: |
181 次 |
| 最近记录: |