기능 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() 은 전달하지 않은 적어도 두 개의 요소입니다.

첫 번째 요소가 있어야 합 array(일부 버전의 Perl 첫 번째 요소가 될 수 있는 배열에 대한 레퍼런스,그러나이 사용은 권장하지 않음,세부사항 다른 섹션에서 아래)

다음 인수는 일반적으로 스칼라이나 배열입니다. 배열의 첫번째 인수에 추가됩의 모든 요소는 다음 인수입니다.

인자로 지정할 수 있는 해시 push(@arr, %hash). 에 배열 @arr 추가됩니다 모든 쌍 키의 값은 해쉬 (거기에 심는 순서의 해쉬값은 undefined 다른 실행의 동일한 프로그램을 만들 수 있습니 는 배열 요소는 서로 다른 시퀀스). 지 실생활의 사용은 해시 함수의 인자로 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),그리고 돌아 이 값은 무시됩니다.

사용되는 함수입으로 첫 번째 인수

표준을 사용하여 push() —는 첫 번째 인수 배열하는 요소에서 추가된 다른 모든 인수입니다.

하지만 프로그래밍 언어 Perl 험이었다. 는 경우 첫 번째 인수가 배열을 참조,기능 push()체 았다 참조 참조 데이터를 저장할 수 없습니다.

는 코드는 다음과 같습니다.

▶ Run
#!/usr/bin/perl

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

my $arr = [];

push $arr, 1;

warn Dumper $arr;

Perl 버전 5.12(포함)이 코드의 발생에 오류가:

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.

시작과 펄 5.14 및 5.18 버전(인클루시브)코드 추가 에서 항목되는 함수입고,결과는:

$VAR1 = [
          1
        ];

Perl5.20 및 5.22 또한 추가되는 항목되는 함수입이지만,또한 경고:

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.

이 기능의 언어를 사용하지 않는 것이 좋습니다. 필요하신 경우에는 추가 에서 항목되는 함수입,그것은 최고의 쓰기 명확하게 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)

관련 주제

다른 기사