gpt4 book ai didi

Perl 将@ARGV 数组分配给变量

转载 作者:行者123 更新时间:2023-11-30 23:49:36 25 4
gpt4 key购买 nike

当我将 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" ;
}

最佳答案

如果在 Perl 中将数组分配给标量,您将获得数组中元素的数量。

my @array = (1, 1, 2, 3, 5, 8, 13);

my $scalar = @array; # $scalar contains 7

这被称为“在标量上下文中计算数组”。

如果您在 Perl 中展开双引号字符串中的数组,您将获得由空格分隔的数组元素。

my @array = (1, 1, 2, 3, 5, 8, 13);

my $scalar = "@array"; $scalar contains '1 1 2 3 5 8 13'

这被称为“在双引号字符串中插入数组”。

实际上,在第二个示例中,元素由 $" 变量的当前内容分隔。该变量的默认值是一个空格。但您可以更改它。

my @array = (1, 1, 2, 3, 5, 8, 13);

$" = '+';
my $scalar = "@array"; $scalar contains '1+1+2+3+5+8+13'

要存储对数组的引用,您可以获取对数组的引用。

my $scalar = \@array;

或者使用原始数组的元素创建一个新的匿名数组。

my $scalar = [ @array ];

因为我们不知道您实际想要做什么,所以我们无法推荐其中哪一种是最佳方法。

关于Perl 将@ARGV 数组分配给变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60724917/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com