LoginSignup
3
3

More than 5 years have passed since last update.

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

Last updated at Posted at 2013-09-09

複数の変数をバスっと初期化したい場合
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 );
3
3
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3