- 论坛徽章:
- 0
|
比如我想把如下数据放入散列中
11/12/2009
吃1 0.30
玩2 1.40
我设计我的数据结构为一个散列,这个散列以日期为key,值为一个散列引用,这个散列的内容应该是 ( 吃1=> 0.30,玩2=>1.40 )
但是我在填数据的时候发现,有些数据打印出来是空值,不知道为什么
11/13/09 bill
Use of uninitialized value $ivalue in concatenation (.) or string at read_xls line 82.
== -> #这里有问题
== 测试2 -> 13.09
11/12/09 bill
== 测试1 -> 49
== 猪头 -> 12.99
我的测试文件内容为
11-12-09
测试1 ¥12.99
猪头 ¥49
11-13-09
测试2 ¥13.09
my %bill;
my $pointtmp;
my %day_bill;
for my $mydata ( $omydata->worksheets() )
{
my ( $row_min, $row_max ) = $mydata->row_range();
my ( $col_min, $col_max ) = $mydata->col_range();
for my $row ( $row_min .. $row_max ) {
my $cell = $mydata->get_cell( $row, 0 );
next unless $cell;
# print "Row, Col = ($row, $col)\n";
my $tmp = $cell->value();
$tmp=~s/\s+//ig;
from_to($tmp,"CP936","utf8");
#print " match i find it \n" if $tmp eq "鐚?ご";
# print $tmp;
if( $tmp =~ m/\d+\/\d+/ )
{
if( %day_bill )
{
$bill{$pointtmp} = {%day_bill};
%day_bill = undef;
}
# $bill{$tmp} = undef;
$pointtmp = $tmp;
print "set date to $pointtmp\n";
print "\n";
}else{
#print FH ":";
$cell = $mydata->get_cell( $row, 1 );
# print $cell->value(),"\n";
$day_bill{$tmp}=$cell->value();
}
}
}
$bill{$pointtmp} = {%day_bill};
while(my($key,$value) = each(%bill))
{
print "$key bill \n";
while(my($ikey,$ivalue) = each(%$value))
{
print "== $ikey -> $ivalue \n";
}
}
|
|
|