Perlで"hoge" x 10とやると...

DBIx::Skinny::DBD::mysqlに書いてあったのですが、、
Perlで"hoge" x 10とやると...

% perl -le 'print "hoge" x 10'
hogehogehogehogehogehogehogehogehogehoge


ってなるんですね。知らなかった!こんな演算子があったとは。。



DBIx::Skinny::DBD::mysqlでは指定した個数のバインド変数を埋め込むために、下記のように使っていてなるほどなぁと思いました。

% perl -le 'print join(", ",("?") x 10)'
?, ?, ?, ?, ?, ?, ?, ?, ?, ?


配列渡したときの挙動がちょっとよくわかりませんが、、リストコンテキストだと配列を返してくれるんですね。

  • テスト
#!perl 
 
use strict; 
use warnings; 
use 5.010;
use Data::Dumper; 
 
my $str1 = "a" x 3;  
my @str2 = "a" x 3;  
 
say "str1";
say Dumper $str1; 
say "str2";
say Dumper \@str2; 
 
my $list1 = ("a", "b") x 3;  
my @list2 = ("a", "b") x 3;  
 
say "list1";
say Dumper $list1; 
say "list2";
say Dumper \@list2; 
  • 結果
str1
$VAR1 = 'aaa';

str2
$VAR1 = [
          'aaa'
        ];

list1
$VAR1 = 'bbb';

list2
$VAR1 = [
          'a',
          'b',
          'a',
          'b',
          'a',
          'b'
        ];