неявное -преобразование в perl

Я новичок в Perl, может ли кто-нибудь объяснить мне следующие сценарии, пожалуйста:

#!/usr/bin/env perl
use strict;
use warnings;
sub f1($) { my ($v) = @_; print "f1 $v\n"; }
sub f2(@) { my ($v) = @_; print "f2 $v\n"; }
my $s = "ww";
my @a = ("xx", "yy", "zz");
f1 $s; f1 @a; f2 $s; f2 @a;

Вывод на моем компьютере:

f1 ww
f1 3
f2 ww
f2 xx     # why!!

Кто-нибудь может объяснить, почему четвертый вывод равен xx? Я думал, что это должно быть zz, так как когда массив преобразуется в скаляр, он должен быть последним элементом массива.

5
задан TLP 22 June 2012 в 06:43
поделиться