機能 push() Perl

は、Perlプログラミング言語を搭機能 push(). この機能を追加できる要素はPerlの配列になります。

次に例を示します。

▶ Run
#!/usr/bin/perl

use Data::Dumper;

my @arr = (1, 2);

push @arr, undef, 'Hello', 8;

print Dumper \@arr;

このプログラムを定義します配列 @arr とは、つの要素からなる。 そこでこの機能を使 push() この配列の追加も3項目です。 undef、ライン 'Hello'8.

の出力からこのプログラム:

$VAR1 = [
          1,
          2,
          undef,
          'Hello',
          8
        ];

引数

push(@arr, $value1, $value2);
push(@arr, @other_arr);
push(@arr, @other_arr, @and_the_other_arr);

標準使用 push() が通過ではない 少なくとも二つです。

最初の要素でなければな配列の一部のバージョンでは、Perlの 最初の要素が参照配列が、この 使用推奨されていない、詳細は別の照)

以下の引数は通常scalarsまたは配列. 配列内の最初の 引数を追加するすべての要素は以下の引数になります。

としての引数を指定できるのはハッシュ push(@arr, %hash). の配列 @arr まで追加するすべてのペアのキー-値のハッシュ あの特徴は、ハッシュ値は未定義 と異なるのと同じプログラムを作成でき 配列の要素が異なる配列). が 実際の使用のハッシュ関数として引数 push() ます。

指定がない場合には任意の引数でエラー:

Not enough arguments for push at script.pl line 3, near "push()"
Execution of script.pl aborted due to compilation errors.

を指定した場合には一つの引数をこの引数の配列である push(@arr);、その誤りません この変わることはありません配列し、そのコード use warnings;, この警告:

Useless use of push with no values at script.pl line 8.

戻り値

機能 push() の要素の数を返しまった後の配列 この機能を実行します。

my $number = push(@arr, $value);

このコードはこのコード:

push(@arr, $value);
my $number = scalar(@arr);

戻り値 push()を 必要としない受けなければなりません。 非常によく使われ push(@arr, $value)を返す この値は無視されます。

利用ARRAYREF最初の引数として

標準使用 push() —最初の引数が 配列の要素から追加されたすべての引数になります。

が、プログラミング言語Perlた実験です。 の場合 最初の引数が配列の機能 push()そのもの たdereferencingこの参照の追加データの配列になります。

こちらのコードです。

▶ Run
#!/usr/bin/perl

use strict;
use warnings;
use Data::Dumper;

my $arr = [];

push $arr, 1;

warn Dumper $arr;

Perlのバージョン5.12(inclusive)このコードするエラー:

Type of arg 1 to push must be array (not private variable) at script.pl line 9, near "1;"
Execution of script.pl aborted due to compilation errors.

はじめPerl5.14と5.18バージョンを含む)をコードを追加 の項目のARRAYREF結果は:

$VAR1 = [
          1
        ];

Perl5.20、5.22も項目を追加しましたのARRAYREFもた 警告:

push on reference is experimental at script.pl line 9.
$VAR1 = [
          1
        ];

開始バージョン5.24のこのコードにエラー:

Experimental push on scalar is now forbidden at script.pl line 9, near "1;"
Execution of script.pl aborted due to compilation errors.

この言語を使用することは推奨できません。 場合を追加する必要があります の項目のARRAYREFでと明記し push @{$arr}, 1; 代わりに push $arr, 1;

このことはこの作品は全く同じすべてのバージョンのPerl:

▶ Run
#!/usr/bin/perl

use strict;
use warnings;
use Data::Dumper;

my $arr = [];

push @{$arr}, 1;

warn Dumper $arr;

公式文書

ここでは、出力のコマンド perldoc -f push:

       push ARRAY,LIST
       push EXPR,LIST
               Treats ARRAY as a stack by appending the values of LIST to the
               end of ARRAY.  The length of ARRAY increases by the length of
               LIST.  Has the same effect as

                   for $value (LIST) {
                       $ARRAY[++$#ARRAY] = $value;
                   }

               but is more efficient.  Returns the number of elements in the
               array following the completed "push".

               Starting with Perl 5.14, "push" can take a scalar EXPR, which
               must hold a reference to an unblessed array.  The argument will
               be dereferenced automatically.  This aspect of "push" is
               considered highly experimental.  The exact behaviour may change
               in a future version of Perl.

               To avoid confusing would-be users of your code who are running
               earlier versions of Perl with mysterious syntax errors, put
               this sort of thing at the top of your file to signal that your
               code will work only on Perls of a recent vintage:

                   use 5.014;  # so push/pop/etc work on scalars (experimental)

関連する話題

その他の記事