Help us understand the problem. What is going on with this article?

Perl複数変数の初期化、やはりJavaみたいに変数の型は意識したいのと、きになったコト、データの構造を見るDumperの使い方

More than 5 years have passed since last update.

複数の変数をバスっと初期化したい場合
undefでいいなら、楽なんですが。

my ($a,$b,$c .....);

そして、 undefじゃなくって0文字列 をパスパスと入れたい場合。
まぁ、めんどくさくもこうやるしかないのですかね?

my $a = 0;
my $b = 0;
my $c = 0;

とかやるのめんどい。

my $c = $d = $e = 0;

これはもう可読性が/(^o^)\

まぁそもそもJavaみたいに、型宣言したいって気持ちが強いんですけど。。。
そうすると初期値がそれぞれ自動で違うもの入れてくれるから。

int a, b, c ....;
boolean f,v,g ....;
char hoge, fuga....;

【インスタンス変数(メンバ変数)の型ごとのデフォ値】

type default value
void
boolean false
char 0000
byte, shot, int,long 0
float, double 0.0
参照型 null

詳しくは この辺

話を戻して、Perlの変数初期化の話。
そんなこんなでいろんなとこ見てたらこんなの見つけました。

my ($a, $b) = 0;

これは、右辺を配列と読んで、その要素を昇順に $a, $b へと入れている ということでいいのでしょうか?
で、右辺は 0 という値。。。。
$a には 0 が入り、$b にはundefが入るのではなかろうか?
みてみたらやはりこうでした。

sub main {
    my ( $a, $b ) = 0;
    print Data::Dumper->Dump([$a], ['$a']);
    print Data::Dumper->Dump([$b], ['$b']);
}
[oniku@yakiniku1 mino]$ perl test_mino.pl
$a = 0;
$b = undef;

そりゃそうだ。。。
だから、こうすればいいはず
1行にまとめられて楽ではある。

↓↓↓↓

my ($a, $b) = ( 0, 0 );
colorrabbit
creator.
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away