パスワードを忘れた? アカウント作成
1430599 journal
日記

okkyの日記: Excel::Writer::XLSX の Warning 1

日記 by okky

「ほとんどインターフェースは変わらないよ」
とあるので、とりあえず既存のプログラムを一つ Excel::Writer::XLSX に入れ替えてみた。するとワーニングが出まくる。

Use of uninitialized value $date_time in substitution (s///) at /usr/lib/perl5/site_perl/5.10/Excel/Writer/XLSX/Worksheet.pm line 2666, <STDIN> line 87.
Use of uninitialized value $date_time in substitution (s///) at /usr/lib/perl5/site_perl/5.10/Excel/Writer/XLSX/Worksheet.pm line 2667, <STDIN> line 87.
Use of uninitialized value $date_time in pattern match (m//) at /usr/lib/perl5/site_perl/5.10/Excel/Writer/XLSX/Worksheet.pm line 2670, <STDIN> line 87.
Use of uninitialized value $date_time in pattern match (m//) at /usr/lib/perl5/site_perl/5.10/Excel/Writer/XLSX/Worksheet.pm line 2673, <STDIN> line 87.
Use of uninitialized value $str in length at /usr/lib/perl5/site_perl/5.10/Excel/Writer/XLSX/Worksheet.pm line 2094, <STDIN> line 87.
Use of uninitialized value $str in exists at /usr/lib/perl5/site_perl/5.10/Excel/Writer/XLSX/Worksheet.pm line 4200, <STDIN> line 87.
Use of uninitialized value $str in hash element at /usr/lib/perl5/site_perl/5.10/Excel/Writer/XLSX/Worksheet.pm line 4201, <STDIN> line 87.
Use of uninitialized value $str in hash element at /usr/lib/perl5/site_perl/5.10/Excel/Writer/XLSX/Worksheet.pm line 4205, <STDIN> line 87.

え??! というのでとりあえず、Worksheet.pm line 2666 の辺りを調べてみた。

sub convert_date_time {
 
    my $self      = shift;
    my $date_time = $_[0];
 
    my $days    = 0;    # Number of days since epoch
    my $seconds = 0;    # Time expressed as fraction of 24h hours in seconds
 
    my ( $year, $month, $day );
    my ( $hour, $min,   $sec );
 
    # Strip leading and trailing whitespace.
    $date_time =~ s/^\s+//;                                                          <-- line 2666
    $date_time =~ s/\s+$//;

あれ?? というわけで convert_date_time の引数を調べてみると、

###############################################################################
#
# convert_date_time($date_time_string)
#

引数一個だよねぇ。で、最初の引数を

    my $self      = shift;

って $self に入れたら…その次の行の

    my $date_time = $_[0];

…これって何を参照しているの??

というわけで、存在しない第2引数に対して正規表現を掛けまくっているから warning がでるんだ、と言うのは判った。が、そうなると「前」はどうだったのか…というわけで Spreadsheet::WriteExcel の方を調べる:

sub convert_date_time {
    my $self      = shift;
    my $date_time = $_[0];
 
    my $days      = 0; # Number of days since epoch
    my $seconds   = 0; # Time expressed as fraction of 24h hours in seconds
 
    my ($year, $month, $day);
    my ($hour, $min, $sec);
 
    # Strip leading and trailing whitespace.
    $date_time =~ s/^\s+//;                        <---- これや!
    $date_time =~ s/\s+$//;

?? おんなじやん。ちなみに引数が1つしかないのも変わらない。
なんで前は問題なくて今回は問題が????

というわけで上の方を調べてみた。

Exce::Writer::XLSX

  :
# perltidy with the following options: -mbl=2 -pt=0 -nola
 
use 5.008002;
use strict;
use warnings;
use Carp;
use File::Temp 'tempfile';

Spreadsheet::WriteExcel

:
#
 
use Exporter;
use strict;
use Carp;

!! use warnings; がないっ!! これや!!

というわけで、どうやら、かなり古いバグがある事が判った。 orz
苦労した甲斐の無さが…

この議論は、okky (2487)によって「 ログインユーザだけ」として作成されている。 ログインしてから来てね。
typodupeerror

あと、僕は馬鹿なことをするのは嫌いですよ (わざとやるとき以外は)。-- Larry Wall

読み込み中...