のオペレーター x Perl

のオペレーター x の動作によって異なる方法で利用されています。

にスカラーの文脈を作成する際に用いられ、線の長さ 繰り返します。 こ算を"増殖"の文字列です。

リストのコンテキストが左側のオペランドは括弧内は 使用 qw)繰り返し要素を、指定されました。

ここでは一例ですのオペレーター x にスカラーコンテクスト:

▶ Run
#!/usr/bin/perl

my $str = 'A' x 4;

print $str;

プログラムを表示から構成される文字列の文字 'A': 'AAAA'.

場合は、左被演算子を指定します複数の文字はすべて繰り返される:

▶ Run
#!/usr/bin/perl

my $str = 'Abc' x 2;

print $str;

この例では表示文字列 'AbcAbc'.

使用空の文字列

にスカラーのオペレーター x を繰り返し、指定された文字列の左被演算子を設定した回数だけ右側のオペランド.

指定した場合、左側のオペランドは空の文字列 ''は、スカラーの文脈の結果は常に空文字列を問わず この値の右側のオペランド:

▶ Run
#!/usr/bin/perl

use Data::Dumper;

my $str = '' x 100;

print Dumper $str;

の終結の時までとし、プログラムできるようにも見え $str が空の文字列が返されます。

する意味は無いこのオペレーター、スカラーの文脈の中で、空の文字列が返されます。

この値の右側のオペランド

にスカラーの演算子の右側のオペランドのオペレーター xが どのように多くの時間が必要 繰り返し、ラインが含まれる左側のオペランド. の場合はオペランドは正の整数、明らかに、どのようになったか。

でもだけます。

  • の場合は右側の被演算子の数 0の結果は常に空文字列となります。
  • 場合は右側のオペランドが負の数は、結果は常に空文字列となります。

場合のコードは use warnings;を負うことが必要となります。 オペレーターの表示警告が表示されます。 ここでは一例ですのスクリプトを表示する文字列 'Negative repeat count does nothing at script.pl line 5.'.

▶ Run
#!/usr/bin/perl

use warnings;

my $str = 'a' x -3;

print $str;

の場合は右側の被演算子が正の数の小数部、小数部で破棄されます。 の結果 'A' x 2.1 ちょうどそのと同じ 'A' x 2.99 —線 'AA'.

リストの文脈で

リストの文脈の中で、オペレーター x を繰り返し、要素になります。 それ以外は必要なリストを、必要なもの もの左被演算子にしるしをつけることになる。 以下のコードを作成し配列 @arr 含有する3要素 各要素はstring 'a':

▶ Run
#!/usr/bin/perl

use Data::Dumper;

my @arr = ('a') x 3;

print Dumper \@arr;

も指定しない場合は、括弧の左被演算子を my @arr = 'a' x 3;の配列 @arrまで を文字列 'aaa'.

のほか、シンプルブラケットを使用でき、オペレーター qw:

▶ Run
#!/usr/bin/perl

use Data::Dumper;

my @arr = qw(abc def) x 2;

print Dumper \@arr;

を実行するとき、このコード配列の @arrと して4つの要素は、string 'abc', 'def', 'abc', 'def'.

公式文書

このスニペットの出力 perldoc perlop つオペレーター x:

Multiplicative Operators

...

    Binary "x" is the repetition operator. In scalar context or if the left
    operand is not enclosed in parentheses, it returns a string consisting of
    the left operand repeated the number of times specified by the right
    operand. In list context, if the left operand is enclosed in parentheses
    or is a list formed by "qw/STRING/", it repeats the list. If the right
    operand is zero or negative (raising a warning on negative), it returns an
    empty string or an empty list, depending on the context.

        print '-' x 80;             # print row of dashes

        print "\t" x ($tab/8), ' ' x ($tab%8);      # tab over

        @ones = (1) x 80;           # a list of 80 1's
        @ones = (5) x @ones;        # set all elements to 5

その他の記事