次のコード スニペットでメモリ リークが発生しています (と思います)。
if (ref($init{'time-layout'}) eq 'HASH') {
my %time= % {$init{'time-layout'}};
my @times= @ {$time{'start-valid-time'}};
if (ref($init{parameters}) eq 'HASH') {
%param= % {$init{parameters}};
if (ref($param{'wind-speed'}) eq 'HASH') {
%wind= % {$param{'wind-speed'}};
@windvalue= @ {$wind{value}};
%temp= % {$param{'temperature'}};
@tempvalue = @ {$temp{value}};
%wdir= % {$param{'direction'}};
@wdirvalue = @ {$wdir{value}};
%hum= % {$param{'humidity'}};
@humvalue = @ {$hum{value}};
undef %wind;
undef %temp;
undef %wdir;
undef %hum;}
undef %param;}
これはサブからのもので、入力はXMLin() ( XML::Simpleから) から来ます。具体的には、入力は(重要な場合)
http://graphical.weather.gov/xml/sample_products/browser_interface/ndfdXMLclient.php? lat=$lat&lon=$lon&product=time-series&begin=2004-01-01T00:00:00&end=2013-04-20T00:00:00&temp=temp&wspd=wspd&rh=rh&wdir=wdir";
ここで$lat
、 と$lon
は緯度と経度です。
コードを実行して SQL サーバーにデータをプラグインするのに数時間かかり、それが完了するかなり前に、Perl のインスタンスが数 GB 以上の RAM を消費します。これは誰かにとっては簡単なことだと思いますが、私はせいぜい Perl の初心者です。