-1

私のプログラムは

#!\usr\bin\perl

@a = (1,2,3);
@b= ("homer", "marge", "lisa", "maria");
@c= qw(one two three);

print push @a, $b; 
print "\n";

@count_number= push @a, $b; 

print @count_number; 
print "\n"; 
print @a; 

私は次のように出力を得ています

4
5
123

出力が得られるのはなぜ4, 5, 123ですか? 配列が拡張されないのはなぜですか? また、出力は4, 4, 123orではありません5, 5, 123。なぜそのような行動?出力が得られないのはなぜ1 2 3 homer marge lisa mariaですか?

私は初心者です。御時間ありがとうございます。

4

3 に答える 3

3

use strictwarnings pragmaの最初の. 変数に何も割り当てられていないため、スクリプトが機能しないため$b、空の値を配列にプッシュしています。前に述べたように、配列内の要素の数を出力しているだけです。また、プッシュ関数は、記憶が正しければ、新しい要素が配列にプッシュされた後にのみ配列の数を返すため、戻り値は常にスカラーである必要があります。

my @a = (1,2,3);
my @b= ("homer", "marge", "lisa", "maria");
my @c= qw(one two three);

#merge the two arrays and count elements
my $no_of_elements = push @a, @b;
print $no_of_elements;

#look into say function, it prints the newline automatically
print "\n";

#use scalar variable to store a single value not an array 
my $count_number= push @a, $b;

print @count_number; print "\n";

print @a;

また興味深い事実として、print @arrayスペースなしですべての要素をリストする場合、配列を二重引用符で囲むとprint "@array"、要素間にスペースが挿入されます。最後になりましたが、perl を初めて使用する場合は、最新の perl の本をhttp://www.onyxneon.com/books/modern_perl/index.htmlからダウンロードする必要があります。これは毎年更新されます。最新のプラクティスとコードがそこにあります。これは、時代遅れのオンライン チュートリアルを確実に凌駕します。また、この本は非常によく論理的に構成されており、perl を簡単に学習できます。

于 2013-01-14T19:36:25.557 に答える
2

$b未定義です。

@b$bは異なる変数です。1 つはリストで、もう 1 つはスカラーです。

内容ではなく、配列の長さを出力しています。

推奨事項:

  1. 「警告を使用する」を使用します。
  2. 「use strict;」を使用してください。
  3. 「プッシュ@a、@b;」を使用

あなたのスクリプト:

@a = (1,2,3);  # @a contains three elements
@b= ("homer", "marge", "lisa", "maria"); # @b contains 4 elements
@c= qw(one two three); # @c contains 3 elements
print push @a, $b;     # $b is undefined, @a now contains four elements 
                       #(forth one is 'undef'), you print out "4"
print "\n";

@count_number= push @a, $b; # @a now contains 5 elements, last two are undef, 
                            # @count_number contains one elements: the number 5

print @count_number;        # you print the contents of @count_number which is 5
print "\n";
print @a;                   # you print @a which looks like what you started with
                            # but actually contains 2 undefs at the end

これを試して:

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

my $b = 4;
my @a = (1,2,3);
my @b= ("homer", "marge", "lisa", "maria");
my @c= qw(one two three);

print "a contains " . @a . " elements: @a\n";

push @a, $b;
print "now a contains " . @a . " elements: @a\n";

my $count_number = push @a, $b;
print "finally, we have $count_number elements \n";
print "a contains @a\n";
于 2013-01-14T19:23:31.620 に答える
0

$array は、配列の長さ (配列内の要素の数) を返します。任意の要素 ($k) を配列 (@arr) にプッシュするには、push (@arr, $k) を使用します。上記の場合、

プッシュ (@b、@b) を使用します。

于 2013-01-14T19:27:47.960 に答える