の最初の要素のインデックスには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; —と言うこ の最初の要素のインデックスが 10. プログラムをテキストを表示 one.

で迅速に明らかになったこの機会にしない簡素化ではなく複雑に作業 IDとなります。 ここではのプログラムを行う前であればいつでもかまい はどのように、配列になります。

な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 Pro変 $[:

    $[      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.

その他の記事