4

私はこれが配列の長さを与えることを期待していました。$mo私はスカラーコンテキストを暗示していると思ったので。

しかし、代わりに、エラーが発生します:

Global symbol "$mo" requires explicit package name at ./a.pl line 7.

#! /usr/bin/perl
use strict;
use warnings;

my @mo = (3,4,5);
print( $mo);

更新:: mo は変数であり、 $mo のシジル $ はスカラーコンテキストを使用していると思いました。私の質問は、実際に長さを取得するよりも印章についてです。

4

3 に答える 3

5

@mo使用中の要素の数を取得するためscalar @mo

my $num_elements = scalar @mo;

scalar比較のように、コンテキストがスカラーでなければならないことを指示する場合は、省略できます。

if ($count < @mo) { print "$count is less than the number of elements" }

最後の要素のインデックスである$#mo、を使用することもできます(通常は要素の数より1つ少ない)。

my $last_index = $#mo;

これは、配列を反復処理していて、配列インデックスが必要な場合に役立ちます。

for (0..$#mo)
{
   print "Index $_ is $mo[$_]\n";
}

この$mo 形式は、配列の要素を取得するときに使用されます。

my $second_element = $mo[1];

$moそれ自体は完全に別個の変数です(ただし、混乱を招く可能性があるため、このような変数を作成するべきではありません)。

于 2013-02-28T08:29:03.377 に答える
1

配列の長さを次のように取得できます

  1. 私の $mo = @mo;
    $mo; を印刷します。

  2. 私の $mo = スカラー (@mo);
    $mo; を印刷します。

  3. 私の $mo = $#mo + 1;
    $mo; を印刷します。

于 2013-02-28T09:23:56.873 に答える