鈍足ランナーのIT日記

走るのが好きな5流のITエンジニアのブログ。

趣味の範囲は広いけど、どれも中途半端なクソブロガー楽しめるWebアプリを作ってあっと言わせたい。サーバーサイドPerl(Mojolicious)、クライアントサイドVue.js。Arduinoにも触手を伸ばす予定。

perlでデータを一旦変数に入れないと値が変わる?

データを一旦変数に入れてから使わないと値が変わるの?

use strict;
use warnings;
use Geo::WKT;
use Data::Dumper;

my $linestring = qq/LINESTRING(1 1,2 2)/;
my $geoline = parse_wkt_linestring($linestring);
my $points = $geoline->points();

my $data1={name=>"name1",points=>$points};
print Dumper($data1);

my $data2={name=>"name2",points=>$geoline->points()};
print Dumper($data2);

結果は

$VAR1 = {
          'points' => [
                        [
                          '1',
                          '1'
                        ],
                        [
                          '2',
                          '2'
                        ]
                      ],
          'name' => 'name1'
        };
Odd number of elements in anonymous hash at test.pl line 13.
$VAR1 = {
          'ARRAY(0x8006cb30)' => undef,
          'points' => [
                        '1',
                        '1'
                      ],
          'name' => 'name2'
        };

というところで躓いていました。。。

一旦値を入れないと、意図しない動きとなってしまっていた。

コンテキスト?まわりの知識がアヤフヤなのがまずいのかも。。 ハッシュの値として、受け取るのと、スカラ変数で受け取るのでは 値が変わるのかな???