|
|
|
|
| 关于这个出错信息:Use of uninitialized value |
 关于这个出错信息:Use of uninitialized value - hosine [ 2004-11-30 14:43 | 1,730 byte(s)]
 Re: 关于这个出错信息:Use of uninitialized value - wiwj [ 2004-12-07 13:58 | 44 byte(s)]
 Re: 关于这个出错信息:Use of uninitialized value - youzhiqingnian [ 2004-11-30 22:12 | 566 byte(s)]
|
|
|
|
[Original]
[Print]
[Top]
|
我是Perl的新手,也许问题有点菜,请各位体谅
我有这么一个段的程序,功能就是从excel中统计每个人的旅游费用(excel中:name cost describe)
#! /usr/bin/perl -w
use strict;
use OLE;
my @files = @ARGV;
my $app = CreateObject OLE"Excel.Application" || die "Couldn't open Excel
";
my ($file, $counter, $person,%expenses);
foreach $file (@files)
{
my $book = $app->Workbooks->Open("D:\perlab\simpleModel\$file");
my $sheet = $book->Worksheets(1);
my $done = 0;
$counter = 1;
#my ($expense,$reason);
while( ! $done)
{
my ($person, $expense, $reason) = ($sheet->Range("A$counter")->{'Value'},
$sheet->Range("B$counter")->{'Value'},
$sheet->Range("C$counter")->{'Value'});
if($reason =~ m"travel"i)
{
$expenses{$person} += $expense;
}
if(! $person && ! $expense && !$reason)
{
$done =1;
}
$counter++;
}
$app->Workbooks->Close($file);
}
$app->Quit();
运行后,提示能得到结果,但同时也提示:
Use of uninitialized value in pattern match (m//) at D:/perlab/simpleModel/excell.pl line 20.
20行是:if($reason =~ m"travel"i)
我不明白为什么会有此错误??
P.S. 在my ($person, $expense, $reason)中,$person算不算被重定义,怎么提示有错?
|
|
|
----
我想做个出色的贼,偷去我心爱女人的心^_^
|
|
[Original]
[Print]
[Top]
|
|
[Original]
[Print]
[Top]
|
这个提示是由perl的 -w 开关打开的,原因是该变量没
有初始化,也就是
$sheet->Range("C$counter")->{'Value'}) 的值为空。
这只是一个警告,不影响程序的运行,如果你觉得警告
信息多余可以去掉程序一开始的 -w 开关。
同一个变量名在同一个范围内只能用my定义一次,所
以以下两行有冲突,第一行必须注释掉:
#my ($expense,$reason);
........
my ($person, $expense, $reason) = ($sheet->Range("A$counter")->{'Value'},
|
|
|
[Original]
[Print]
[Top]
|
|
|