2017-12-02 143 views
0
use strict; 
use warnings; 

sub maximum_value { 

    my @array = @_; 
    my @array1 = shift(@_); 
    my @array2 = push(@_, 0); 

    print "@array\n"; 
    print "@array1\n"; 
    print "@array2\n"; 

    my $i = 0; 

    foreach (@array) { 

     if ($i < $_) { 
      $i = $_; 
     } 
    } 

    print "\nMax Value is $i"; 
} 

maximum_value(10, 15, 11, 13); 

这是一个Perl脚本。我将这些值传递给子程序并将它们存储在@_中。为什么@array2评估为4?我不明白“push”返回的值

+2

你已经有了一个很好的答案,但是我可能会问你期望在@ @ array2中? – PerlDuck

回答

8
perldoc -f push

状态:

返回下列完成的推数组中元素的数目。

  1. @_开始有四个要素,因为你有4个参数调用你的子。
  2. shift@_数组中的第一个元素。 shift返回已移除的元素。 @_数组现在包含3个元素。
  3. push零到末尾的@_数组,其中又包含4个元素。 push返回元素的数量,并将其分配给@array2