该索引的第一个元素在Perl阵列

在Perl编程语言,如同在其他许多编程语言, 第一个元素的排列的索引 0. 但是,有一个可能性(这是非常不建议 使用),使索引的第一个元素是 1 (或其他数)。

这里是一个例子码:

▶ Run
#!/usr/bin/perl

my @arr = ('one', 'two', 'three');

print $arr[1];

该程序将显示该文本 two. 我们指的阵元,与指数 1 和这个二元的阵列。

  • 索引 0 是第一个元件阵列,在我们如,串 'one'
  • 索引 1 的第二元件阵列,在我们如,串 'two'
  • 索引 2 —是第三个元件阵列,在我们如,串 'three'

学习者编程是不寻常的,但这是标准的。 0 是指数第一 元件阵列,几乎在所有编程语言。

$[

创作者的Perl编程语言中想做的语言,这样的程序员 决定为自己什么,他想要使用的语言(原则 TIMTOWTDI), 因此,语言是一种方法来改变该索引的第一个元素。 如果有人不舒服 使用 0 作为索引的第一个元素,你可以说 什么是索引的第一个元素将 1.

这里是一个例子码:

#!/usr/bin/perl

$[ = 1;

my @arr = ('one', 'two', 'three');

print $arr[1];

设置价值的定义变量每个单位 $[ = 1; —现在说这个 该索引的第一个元素将 1,不 0. 该程序将显示该文本 one.

但它很快就变得明显,这一机会并没有简化,而是复杂的工作 身份证。 在这里,你开启程序和在它之前改变的东西,你首先需要了解 是如何工作的阵列。

所以Perl5.12使用变 $[ 导致的外观的警告: Use of assignment to $[ is deprecated at script.pl line 3..

Perl版本5.12, 5.14, 5.16, 5.18, 5.20, 5.22. 5.24, 5.26 发出这个警告。 5.28 是要发出一个警告 Use of assignment to $[ is deprecated, and will be fatal in Perl 5.30 at script.pl line 3., 和Perl5时30分停止给有能力改变该索引的第一个元素。 当你尝试这样做 该程序失败的错误的文本 Assigning non-zero to $[ is no longer possible at script.pl line 3..

所以在最近的版本Perl的第一个元素的总拥有的索引 0. 在Perl在此之前 版本有机会使另一个号码索引的第一个元素,但最好这个机会 从来没有使用。

官方文件

这一段的出 perldoc perlvar 亲变 $[:

    $[      This variable stores the index of the first element in an array,
            and of the first character in a substring. The default is 0, but
            you could theoretically set it to 1 to make Perl behave more
            like awk (or Fortran) when subscripting and when evaluating the
            index() and substr() functions.

            As of release 5 of Perl, assignment to $[ is treated as a
            compiler directive, and cannot influence the behavior of any
            other file. (That's why you can only assign compile-time
            constants to it.) Its use is highly discouraged.

            Prior to Perl v5.10.0, assignment to $[ could be seen from outer
            lexical scopes in the same file, unlike other compile-time
            directives (such as strict). Using local() on it would bind its
            value strictly to a lexical block. Now it is always lexically
            scoped.

            As of Perl v5.16.0, it is implemented by the arybase module.

            As of Perl v5.30.0, or under "use v5.16", or "no feature
            "array_base"", $[ no longer has any effect, and always contains
            0. Assigning 0 to it is permitted, but any other value will
            produce an error.

            Mnemonic: [ begins subscripts.

            Deprecated in Perl v5.12.0.

其他文章